求助大佬指出错误 加深理解orz
  • 板块P1123 取数游戏
  • 楼主acwww
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/4/4 11:12
  • 上次更新2023/10/28 04:40:17
查看原帖
求助大佬指出错误 加深理解orz
592775
acwww楼主2022/4/4 11:12
求助一下大佬们 写了这个代码 对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();
    }
}

2022/4/4 11:12
加载中...