版权声明:转载请注明原文地址即可,要是本文对您有些许帮助的话,请您在下方点个赞,谢谢啦ヾ(o◕∀◕)ノヾ https://blog.csdn.net/qq_33583069/article/details/86714016
没啥好说的。。
主要是坐标更新的时候写法可以参照一下。
另一种写法是手动写一个
const dx[]={-1,1,0,0};
const dy[]={0,0,-1,1};
然后你懂的。。
这个题呢由于已经预先覆盖了a[i][j]所以不可能再枚举到自身。
#include <iostream>
using namespace std;
int n,m,cnt;
#define N 100
char a[N][N];
bool inside(int x,int y){
return x>=0&&x<n&&y>=0&&y<m;
}
void dfs(int x,int y){
a[x][y]='.';
for(int i=-1;i<=1;i++)
for(int j=-1;j<=1;j++){
int tx=x+i,ty=y+j;
if(inside(tx,ty)&&a[tx][ty]=='W')dfs(tx,ty);
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++)cin>>a[i];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(a[i][j]=='W'){
++cnt;dfs(i,j);
}
cout<<cnt;
return 0;
}