没写完的伪代码,但是自己实在在写dfs的时候不会存里面这个记录当前最优解的cnt了,每次进行下一步新dfs的时候都会重新记录为0,希望大佬求解
#include<bits/stdc++.h>
using namespace std;
int n,m;
int dp[1005][1005],a[1005][1005];
bool vis[1005][1005];
const int dx[3]={0,1,-1};
const int dy[3]={1,0,0};
long long ans;
void dfs(int x,int y){
long long cnt=0;
for(int i=0;i<3;i++)
{ int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=1&&ny>=1&&nx<=n&&ny<=m&&!vis[nx][ny])
{ cnt+=a[x][y];
if(x==n&&y==m)continue;
vis[nx][ny]=1;
dfs(nx,ny);
vis[nx][ny]=0;
}
}
if(ans<cnt)ans=cnt;
}
int main()
{ cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j+=)
{
cin>>a[i][j];
dp[i][j]=a[i][j];
}
dfs(1,1);
cout<<ans<<ednl;