找到所有的‘#’连通域
输入
5 6
x#xxxx
xx#xxx
xx#xx#
xxx##x
x#xxxx
输出
5
#include <iostream>
#include <cstring>
using namespace std;
char maze[110][110];
bool vis[110][110];
int n,m;
int cnt=0;
void dfs (int x,int y)
{
if (x<0||x>=n||y<0||y>=m){
return ;
}
if (maze[x][y]=='#'&&!vis[x][y])
{
vis[x][y]=true;
} else {
return ;
}
dfs (x+1,y);
dfs (x,y+1);
dfs (x-1,y);
dfs (x,y-1);
return ;
}
int main ()
{
cin>>n>>m;
for (int i=0;i<n;i++){
cin>>maze[i];
}
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
if (maze[i][j]=='#'&&!vis[i][j]){
cnt++;
dfs (i,j);
}
}
}
cout<<cnt<<endl;
return 0;
}
详解欢迎关注我的公众号:王同学的蓝桥杯训练营