1 solutions
-
-1
两个豆子就4维dp,数据量小为所欲为
其实也可以搜索做,一次枚举两个豆子的走法,可以两个都往上,一个往上一个往右,或者连个都往右
懒得写太多,自己看自己悟
#include<bits/stdc++.h> using namespace std; int n,x,y,z,dp[90][90][90][90],a[90][90]; int main(){ cin>>n; while(true){ cin>>x>>y>>z; if(x==0&&y==0&&z==0){ break; } a[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 l=1;l<=n;l++){ dp[i][j][k][l]=max(max(dp[i-1][j][k-1][l],dp[i][j-1][k][l-1]), max(dp[i][j-1][k-1][l],dp[i-1][j][k][l-1]))+a[i][j]+a[k][l];//四种走法 if(i==k&&j==l){ dp[i][j][k][l]-=a[i][j];//处理重复点 } } } } } cout<<dp[n][n][n][n]; return 0; }
- 1
Information
- ID
- 4
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- 4
- Tags
- # Submissions
- 16
- Accepted
- 8
- Uploaded By