```
#include<bits/stdc++.h>
using namespace std;
int a[60][60];
int dp1[120][60][60];
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=2;i<=m+n;i++)
for(j=1;j<=m;j++)
for(k=1;k<=m;k++)
{
if(i<=j||i<=k)
continue;
dp1[i][j][k]=max(max(dp1[i-1][j][k-1],dp1[i-1][j-1][k]),max(dp1[i-1][j-1][k-1],dp1[i-1][j][k]))+a[j][i-j]+a[k][i-k] ;
if(j==k)
dp1[i][j][k]-=a[j][i-j];
}
cout<<dp1[m+n][m][m];
return 0;
}
```
by 幻影学霸刘 @ 2018-12-08 17:15:03
坐标不一定是1到n
by 幻影学霸刘 @ 2018-12-08 17:15:42