80分 求调
Code:
#include <bits/stdc++.h>
using namespace std;
const int N=11;
int a[N][N],dp[2*N][N][N];
int main(){
int n,x,y,t;cin>>n;
while(cin>>x>>y>>t,x!=0&&y!=0&&t!=0) a[x][y]=t;
for(int s=2;s<=2*n;s++){
for(int i1=1;i1<=n;i1++){
for(int i2=1;i2<=n;i2++){
int j1=s-i1,j2=s-i2;t=a[i1][j1];
if(i1!=i2) t+=a[i2][j2];
int &k=dp[s][i1][i2];
k=max(k,dp[s-1][i1][i2]+t);
k=max(k,dp[s-1][i1][i2-1]+t);
k=max(k,dp[s-1][i1-1][i2-1]+t);
k=max(k,dp[s-1][i1-1][i2]+t);
}
}
}
cout<<dp[2*n][n][n];
return 0;
}
WA一个点
输入:
8
1 1 13
1 3 7
1 8 14
2 2 1
2 4 2
4 3 5
5 5 4
6 2 6
7 8 16
0 0 0
正确输出:60
我的:66