|
- #include<iostream>
- using namespace std;
- #define FOR(i,n,m) for(int i=n;i<=m;i++)
- int a[55][55],f[55][55][55];
- int m,n;
- int main()
- {
- cin>>m>>n;FOR(i,1,m) FOR(j,1,n) cin>>a[i][j];
- FOR(i,1,m) FOR(j,1,n) FOR(k,max(i+j-n,1),min(i+j-1,m))
- {
- if(i==1&&j==1) f[i][j][k]=0;
- else if(i==k && !(i==m&&j==n)) f[i][j][k]=-9999999;
- else f[i][j][k]=a[i][j]+a[k][i+j-k]+
- max(f[i-1][j][k-1],max(f[i][j-1][k-1],max(f[i-1][j][k],f[i][j-1][k])));
- }
- cout<<f[m][n][m];
- return 0;
- }
复制代码 |
|