四维dp
#include<bits/stdc++.h>
#define INF (1<<30)
using namespace std;
const int N=20;
int f[N][N][N][N],a[N][N];
int x,y,n,m;
int main()
{
cin>>m>>n;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
f[i][j][i][j]=-INF;
}
}
for(int x1=1;x1<=m;x1++)
{
for(int y1=1;y1<=n;y1++)
{
for(int x2=1;x2<=m;x2++)
{
for(int y2=1;y2<=n;y2++)
{
f[x1][y1][x2][y2]=max(max(f[x1-1][y1][x2-1][y2],f[x1-1][y1][x2][y2-1]),
max(f[x1][y1-1][x2-1][y2],f[x1][y1-1][x2][y2-1]))+a[x1][y1]+a[x2][y2];
}
}
}
}
cout<<f[m][n][m][n];
return 0;
}
禁止无意义回复,谢谢