33 lines
608 B
C++
33 lines
608 B
C++
#include<cstdio>
|
|
#include<cstring>
|
|
#define fr(i,n) for(int i=1;i<=n;i++)
|
|
int n,x,y,z;
|
|
int a[51][51];
|
|
int sum[51][51][51][51];
|
|
int max(int a,int b)
|
|
{
|
|
return a>b?a:b;
|
|
}
|
|
int main(void)
|
|
{
|
|
scanf("%d",&n);
|
|
while (scanf("%d%d%d",&x,&y,&z))
|
|
{
|
|
if (x+y==0&&z==0) break;
|
|
a[x][y]=z;
|
|
}
|
|
fr(i,n)
|
|
fr(j,n)
|
|
fr(h,n)
|
|
fr(k,n)
|
|
{
|
|
sum[i][j][h][k]=max(max(sum[i-1][j][h-1][k],sum[i][j-1][h][k-1]),
|
|
max(sum[i-1][j][h][k-1],sum[i][j-1][h-1][k]))+a[i][j];
|
|
if (i!=h&&j!=k)
|
|
sum[i][j][h][k]+=a[h][k];
|
|
}
|
|
printf("%d\n",sum[n][n][n][n]);
|
|
return 0;
|
|
}
|
|
|
|
|