变量太长了可以用一个变量的引用来替代
三维数组第一次用
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 15;
int w[N][N];
int f[2*N][N][N];
//k表示横纵坐标之和 当i1 == i2时 说明两次走到了相同位置 所以该数只能取一次
int main(){
int n, a, b, c;
scanf("%d", &n);
while(scanf("%d%d%d", &a, &b, &c), a||b||c) w[a][b] = c;
for(int k = 2; k <= 2*n; k++ )
for(int i1 = 1; i1 <= n; i1++)
for(int i2 = 1; i2 <= n; i2++){
int j1 = k - i1, j2 = k - i2;
//四种情况
if(j1 >= 1 && j1 <= n && j2 >= 1 && j2 <= n){
int t = w[i1][j1];
if(i1 != i2) t += w[i2][j2];
int &x = f[k][i1][i2];
x = max(x, f[k-1][i1-1][i2-1] + t);
x = max(x, f[k-1][i1-1][i2] + t);
x = max(x, f[k-1][i1][i2-1] + t);
x = max(x, f[k-1][i1][i2] + t);
}
}
printf("%d\n", f[n+n][n][n]);
return 0;
}