这是一段深搜代码, 原题,
#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了吗,为什么还要再标记一遍啊? 大佬求助!