求解释
  • 板块学术版
  • 楼主theb0t
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/24 15:59
  • 上次更新2023/11/3 07:54:29
查看原帖
求解释
997236
theb0t楼主2023/7/24 15:59

这是一段深搜代码, 原题,

#include <cstdio>
#define int long long

char mp[115][115];
int vis[115][115],n,m;
int dis[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{-1,-1},{1,-1},{-1,1}};
void dfs(int x,int y)
{
    for(int i=0;i<8;i++)
    {
        int fx=x+dis[i][0];
        int fy=y+dis[i][1];
        if(fx>=0&&fx<n&&fy>=0&&fy<m&&mp[fx][fy]=='W'&&!vis[fx][fy])
        {
            vis[fx][fy]=1;
            dfs(fx,fy);
        }
    }
}
signed main()
{
    int s=0;
    scanf("%lld%lld",&n,&m);
    for(int i=0;i<n;i++)
    {
        getchar();
        scanf("%s",&mp[i]);
    }
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        {
            if(mp[i][j]=='W'&&!vis[i][j])
            {
                s++;
                vis[i][j]=1;
                dfs(i,j);
            }
        }
    printf("%lld\n",s);
    return 0;
}

其中第35行我不太理解,不是在dfs函数已经标记过一遍1了吗,为什么还要再标记一遍啊? 大佬求助!

2023/7/24 15:59
加载中...