如题
我的代码
#include<iostream>
#include<cstring>
using namespace std;
int f[120][55][55];
int map[55][55];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>map[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int k=1;k<i+j;k++)
{
int t=i+j-k;
if(i==k&&(i+j!=n+m)){f[i+j][i][k]=-100000000;continue;}
else f[i+j][i][k]=max(max(f[i+j-1][i-1][k-1],f[i+j-1][i-1][k]),max(f[i+j-1][i][k-1],f[i+j-1][i][k]));
f[i+j][i][k]+=map[i][j]+map[k][t];
}
cout<<f[n+m][n][n]<<endl;
}