随便做做dp _(:3」∠)_
坐标dp,和传纸条一样的,两条路分别为i,j和k,i+j-k。
注意:为了保证i+j-k>0,k的范围应该是min(n,i+j-1)
因为这个wa了两回,我太菜了
代码如下
#include<cstdio> #include<iostream> #include<cmath> #include<cstring> #define MogeKo qwq using namespace std; int n,x,y,z; int a[10][10],f[10][10][10]; int main() { scanf("%d",&n); while(1) { scanf("%d%d%d",&x,&y,&z); if(!x&&!y&&!z) break; a[x][y] = z; } for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) for(int k = 1; k <= min(i+j-1,n); k++) { f[i][j][k] = max(max(f[i-1][j][k-1],f[i-1][j][k]),max(f[i][j-1][k-1],f[i][j-1][k])); f[i][j][k] += a[i][j] + a[k][i+j-k]; if(i==k) f[i][j][k] -= a[i][j]; } printf("%d",f[n][n][n]); return 0; }