那位大佬帮我看看错哪了啊
查看原帖
那位大佬帮我看看错哪了啊
925044
Xia_Qian楼主2023/8/29 20:08
```cpp
#include <algorithm>
#include <array>
#include <iostream>

const int maxn = 2e2 + 7;

int n;
std::array<std::array<int, maxn>, maxn> a;
std::array<std::array<std::array<int, maxn>, maxn>, maxn> dp;

auto gdp(int i, int j, int k) -> int & { return dp.at(i).at(j).at(k); }

auto main() -> int {
  std::cin >> n;
  int x, y, s;
  while (std::cin >> x >> y >> s && x && y && s) {
    a.at(x).at(y) = s;
  }
  for (int step = 2; step <= n * 2; ++step) {
    for (int i = 1; i <= n; ++i) {
      for (int p = 1; p <= n; ++p) {
        int j = step - i;
        int q = step - p;
        if (j > n || q > n || j < 1 || q < 1) {
          continue;
        }
        // std::cout << i << " " << j << " " << p << " " << q << std::endl;
        int f1 = gdp(step - 1, i - 1, p);
        int f2 = gdp(step - 1, i, p - 1);
        gdp(step, i, p) = std::max(f1, f2) + +a.at(p).at(q);
      }
    }
  }
  std::cout << gdp(n * 2, n, n) << std::endl;
}
2023/8/29 20:08
加载中...