易错点:
- 注意样例的位置点数量与n的关系
- .
#include<cstdio>
#include<iostream>
using namespace std;
const int MAXN=12;
int a[MAXN][MAXN],dp[MAXN][MAXN][MAXN][MAXN];
int main(){
int n;
scanf("%d",&n);
int x,y,value;
do{
scanf("%d%d%d",&x,&y,&value);
a[x][y]=value;
}while(x!=0);
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],max(
dp[x1-1][y1][x2][y2-1],max(
dp[x1][y1-1][x2-1][y2],
dp[x1][y1-1][x2][y2-1])));
dp[x1][y1][x2][y2]+=a[x1][y1]+a[x2][y2];
if(x1==x2&&y1==y2)dp[x1][y1][x2][y2]-=a[x2][y2];
}
printf("%d
",dp[n][n][n][n]);
return 0;
}