思路:记忆化搜索
#include<iostream>
#include<cmath>
using namespace std;
const int N=1010;
int a[N][N],f[N][N]; bool b[N][N];
int n,m;
int dfs(int x,int y)
{
if(b[x][y]) return f[x][y];
int ans=-0x3f3f3f3f;
if(y>1) ans=max(ans,dfs(x,y-1));
if(x>1) ans=max(ans,dfs(x-1,y));
if(x<n) ans=max(ans,dfs(x+1,y));
f[x][y]=ans+a[x][y];
b[x][y]=true;
return f[x][y];
}
int main()
{
cin>>n>>m;
b[1][1]=true;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++) cin>>a[i][j];
}
f[1][1]=a[1][1];
cout<<dfs(n,m);
return 0;
}