方格取数
方格取数
玄学的四维/简化后三位dp
n小于等于9,狂喜,可以用一些奇奇怪怪的方法了
dp[i][j][k]代表走到(i,j)和(k,i+j-k)时可取的最大值
然后没有了
// // main.cpp // P1004 方格取数 // // Created by Yuying Xue on 2018/8/5. // Copyright © 2018年 Yuying Xue. All rights reserved. // #include <bits/stdc++.h> using namespace std; int a[12][12],f[20][20][20][20]; int x,y,z; int main() { int n; cin>>n; cin>>x>>y>>z; while(x!=0&&y!=0) { a[x][y]=z; cin>>x>>y>>z; } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=1;k<=n;k++) for(int p=1;p<=n;p++) { f[i][j][k][p]=max(f[i-1][j][k-1][p],max(f[i][j-1][k-1][p],max(f[i-1][j][k][p-1],f[i][j-1][k][p-1])))+a[i][j]+a[k][p]; if(i==k&&j==p) f[i][j][k][p]-=a[i][p]; } cout<<f[n][n][n][n]; return 0; }

浙公网安备 33010602011771号