求助一下大佬们 写了这个代码 对dfs可能还不太理解 希望大佬指出这样写的错误之处
#include <iostream>
#include <algorithm>
using namespace std;
const int N=10;
int n,m;
int a[N][N],vis[N][N],ans;
int dfs(int x,int y)
{
int sum=a[x][y];
if(vis[x+2][y]==0&&x+2>=1&&x+2<=n&&y<=m&&y>=1)
{
vis[x+2][y]=1;
sum+=dfs(x+2,y);
sum-=dfs(x+2,y);
vis[x+2][y]=0;
}
if(vis[x][y+2]==0&&x>=1&&x<=n&&y+2>=1&&y+2<=m)
{
vis[x][y+2]=1;
sum+=dfs(x,y+2);
sum-=dfs(x,y+2);
vis[x][y+2]=0;
}
if(vis[x+1][y+1]==0&&x+1<=n&&x+1>=1&&y+1<=m&&y+1>=1)
{
vis[x+1][y+1]=1;
sum+=dfs(x+1,y+1);
sum-=dfs(x+1,y+1);
vis[x+1][y+1]=0;
}
ans=max(ans,sum);
return sum;
}
void solve()
{
ans=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
}
}
dfs(0,0);
cout<<ans<<endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
}