```cpp
#include<cstdio>
#include<iostream>
using namespace std;
int n,x,y,z,map[51][51],f[102][51][51];
int main()
{
scanf("%d",&n);
for(;;)
{
scanf("%d%d%d",&x,&y,&z);
if(x==0&&y==0&&z==0)break;
map[x][y]=z;
}
for(int i=2;i<=2*n-1;++i)
for(int j=max(1,i-n+1);j<=min(n,i);j++)
for(int k=max(1,i-n+1);k<=min(n,i);k++)
{
f[i][j][k]=max(max(f[i-1][j][k],f[i-1][j-1][k]),max(f[i-1][j-1][k-1],f[i-1][j][k-1]))
+map[j][i-j+1]+map[k][i-k+1];
if(j==k)f[i][j][k]-=map[j][i-j+1];
}
printf("%d",f[2*n-1][n][n]+map[1][1]);
}
```
试试这个
by ldto @ 2019-10-31 12:45:49