RT
连样例也过不去了
#include <bits/stdc++.h>
using namespace std;
int dp[110][55][55];
int a[100][100];
int maxx(int x,int y,int z,int b)
{
return max(max(x,y),max(z,b));
}
int main()
{
int n,m,i,j,k;
scanf("%d%d",&m,&n);
for (i=1;i<=m;++i)
for (j=1;j<=n;++j)
scanf("%d",&a[i][j]);
for (i=1;i<=m+n-1;++i)
for (j=1;j<=m;++j)
for (k=1;k<=n;++k)
{
int x1=j,x2=k,y1=i-k+1,y2=i-j+1;
if (y1<1||y2<1) continue;
dp[i][j][k]=maxx(dp[i-1][j][k],dp[i-1][j][k-1],dp[i-1][j-1][k],dp[i-1][j-1][k-1])+a[x1][y1]+a[x2][y2];
if (x1==x2)
dp[i][j][k]-=a[x1][y1];
}
cout<<dp[n+m-1][m][n]<<endl;
return 0;
}