1 solutions
-
0
很简单的DP
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int NR=51; int a[NR][NR],f[NR][NR][NR][NR]; int main() { int n,m,i,j,k,l; cin>>m>>n; for(i=1;i<=m;i++) for(j=1;j<=n;j++) cin>>a[i][j]; for(i=1;i<=m;i++) for(j=1;j<=n;j++) for(k=1;k<=m;k++) for(l=1;l<=n;l++) { f[i][j][k][l]=max(max(f[i-1][j][k-1][l],f[i-1][j][k][l-1]),max(f[i][j-1][k-1][l],f[i][j-1][k][l-1])); if(i==k && j==l) f[i][j][k][l]+=a[i][j]; else f[i][j][k][l]+=a[i][j]+a[k][l]; } cout<<f[m][n][m][n]; return 0; }
- 1
Information
- ID
- 6
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 4
- Tags
- # Submissions
- 6
- Accepted
- 4
- Uploaded By