
易错点:
- 注意样例的位置点数量与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\n",dp[n][n][n][n]);
	return 0;
}
 
                    
                     
                    
                 
                    
                 
        