深搜踏青
程序员文章站
2023-12-23 17:11:10
...
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
char maze[200][200];
bool vis[200][200];
int res;
int n,m;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
void dfs(int x,int y){
int xx,yy;
for(int i=0;i<4;i++){
xx=x+dx[i];
yy=y+dy[i];
if(0<=xx&&xx<n&&0<=yy&&y<m&&(vis[xx][yy]==false))
{
if(maze[xx][yy]=='#'){
vis[xx][yy]=true;
dfs(xx,yy);
}
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>maze[i][j];
}
}
memset(vis,false,sizeof(vis));
res=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(maze[i][j]=='#'&&(vis[i][j]==false)){
vis[i][j]=true;
dfs(i,j);
res++;
}
}
}
cout<<res<<endl;
return 0;
}