题解
2024-07-06 16:00:03
发布于:江苏
17阅读
0回复
0点赞
#include<iostream>
#include<cstdio>
using namespace std;
char maze[1010][1010];
bool vis[1010][1010];
int n,m;
int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
void dfs(int x,int y){
vis[x][y]=1;
for(int i=0;i<4;i++){
int tx=x+dir[i][0];
int ty=y+dir[i][1];
if(tx<1||tx>n||ty<1||ty>m)continue;
if(maze[tx][ty]=='0')continue;
if(vis[tx][ty])continue;
dfs(tx,ty);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>maze[i][j];
}
}
int cnt=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(maze[i][j]!='0'&&!vis[i][j]){
cnt++;
dfs(i,j);
}
}
}
cout<<cnt;
return 0;
}
这里空空如也
有帮助,赞一个