这道题和开始的那个传纸条有点像,就不多说了。直接上代码把。
#include<bits/stdc++.h>
using namespace std;
const int N=1e1+5;
int f[N*2+5][N][N],m[N][N];
int main()
{
int n; cin>>n;
int a,b,c;
while(cin>>a>>b>>c){
if(!a&&!b&&!c) break;
m[a][b]=c;
}
for(int i=2;i<=n*2;i++){
for(int x1=max(1,i-n);x1<=n&&x1<i;x1++){
for(int x2=max(1,i-n);x2<=n&&x2<i;x2++){
int tmp=m[x1][i-x1];
if(x1!=x2) tmp+=m[x2][i-x2];
for(int a=0;a<=1;a++){
for(int b=0;b<=1;b++){
f[i][x1][x2]=max(f[i][x1][x2],f[i-1][x1-a][x2-b]+tmp);
}
}
}
}
}
cout<<f[n*2][n][n]<<endl;
}