#include<bits/stdc++.h>
using namespace std;
const int N=11;
int g[N][N];
int f[2*N][N][N];
int main(){
int n;
cin >> n;
int a,b,c;
while(cin>>a>>b>>c,a){
g[a][b]=c;
}
for(int k=2;k<=2*n;k++){
for(int i1=1;i1<=n;i1++){
for(int i2=1;i2<=n;i2++){
int j1=k-i1,j2=k-i2;
if(j1<=n&&j1>=1&&j2<=n&&j2>=1){
int &x=f[k][i1][i2];
int t = g[i1][j1];
if(i1!=i2) t += g[i2][j2];
x = max(x, f[k-1][i1-1][i2-1]+t);
x = max(x, f[k-1][i1-1][i2]+t);
x = max(x, f[k-1][i1][i2-1]+t);
x = max(x, f[k-1][i1][i2]+t);
}
}
}
}
cout << f[2*n][n][n] << endl;
return 0;
}
参考题解
|