#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define N 210
int n,m,sta_y;
LL g[N][N],mem[N][N],ans=-1e9;
int dy[3]={-1,0,1};
LL maxx(LL a,int b){
return a>b?a:b;
}
void dfs(int x,int y,int s){
if(mem[x][y]) return;
s+=g[x][y];
if(x==1){
ans=maxx(ans,s);
mem[x][y]=1;
return;
}
if(x<1||y<1||x>n||y>m) return;
mem[x][y]=1;
for(int i=0;i<3;i++)
dfs(x-1,y+dy[i],s);
}
int main(){
scanf("%d%d",&n,&m);
sta_y=(m+1)/2;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%lld",&g[i][j]);
dfs(n,sta_y,0);
printf("%lld",ans);
return 0;
}
想用dfs+记忆化搜索,结果样例都没过,希望有大佬按照我这个思路改一下