```c++
#include<bits/stdc++.h>
using namespace std;
int n;
int dp[20][20][20][20];
int a[20][20];
int main()
{
cin>>n;
while(true)
{
int x, y,z;
cin>>x>>y>>z;
if(x==0&&y==0&&z==0)break;
a[x][y]=z;
}
for(int x1=1;x1<=n;x1++)
{
for(int y1=1;y1<=n;y1++)
{
for(int x2=1;x2<=n;x2++)
{
for(int y2=1;y2<=n;y2++)
{
dp[x1][y1][x2][y2]=max(dp[x1-1][y1][x2-1][y2],dp[x1][y1-1][x2][y2-1]);
dp[x1][y1][x2][y2]=max(dp[x1-1][y1][x2][y2-1],dp[x1][y1-1][x2-1][y2]);
dp[x1][y1][x2][y2]=dp[x1][y1][x2][y2]+a[x1][y1]+a[x2][y2];
if(x1==x2&&y1==y2)dp[x1][y1][x2][y2]-=a[x2][y2];
}
}
}
}
cout<<dp[n][n][n][n];
return 0;
}
```
你的代码公式那里有问题
by wuxiuyuan @ 2023-10-14 13:14:26
不应该是求四个数的最大值吗,你看看你在求什么
by wuxiuyuan @ 2023-10-14 13:15:17
改完后的
```c++
#include<bits/stdc++.h>
using namespace std;
int n;
int dp[20][20][20][20];
int a[20][20];
int main()
{
cin>>n;
while(true)
{
int x, y,z;
cin>>x>>y>>z;
if(x==0&&y==0&&z==0)break;
a[x][y]=z;
}
for(int x1=1;x1<=n;x1++)
{
for(int y1=1;y1<=n;y1++)
{
for(int x2=1;x2<=n;x2++)
{
for(int y2=1;y2<=n;y2++)
{
dp[x1][y1][x2][y2]=max(dp[x1-1][y1][x2-1][y2],dp[x1][y1-1][x2][y2-1]);
dp[x1][y1][x2][y2]=max(dp[x1-1][y1][x2][y2-1],dp[x1][y1][x2][y2])
dp[x1][y1][x2][y2]=max(dp[x1][y1][x2][y2],dp[x1][y1-1][x2-1][y2]);
dp[x1][y1][x2][y2]=dp[x1][y1][x2][y2]+a[x1][y1]+a[x2][y2];
if(x1==x2&&y1==y2)dp[x1][y1][x2][y2]-=a[x2][y2];
}
}
}
}
cout<<dp[n][n][n][n];
return 0;
}
```
by wuxiuyuan @ 2023-10-14 13:16:26
@[wuxiuyuan](/user/701478) 谢谢
by dmx7u19x @ 2023-10-19 13:00:05