#include
#include
#include
using namespace std;
int main()
{
int i,j,l,k,n,t1,t2,t3,t4,a[10][10],b[10][10][10][10];
cin>>n;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
while(cin>>t1>>t2>>t3)
{
if(t1==t2&&t2==t3&&t3==0)
break;
a[t1][t2]=t3;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(l=1;l<=n;l++)
for(k=1;k<=n;k++)
{
t1=b[i-1][j][l-1][k];
t2=b[i][j-1][l-1][k];
t3=b[i-1][j][l][k-1];
t4=b[i][j-1][l][k-1];
b[i][j][l][k]=max(t1,max(t2,max(t3,t4)))
+a[i][j]+a[l][k]*(i==l||j==k?0:1);
}
cout<
<
本题需要采用双线动态规划的思想。每线二维,共4维。 (另:此题可用图论便捷地推广到n线级别)