保姆!!!
2024-11-08 20:51:26
发布于:上海
29阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int N=100+10;//定义最大值!
const int M=100+10;
int dir_x[4]={-1,1,0,0};//方向数组(一维数组)
int dir_y[4]={0,0,-1,1};
char mp[N][M];
bool vis[N][M];
int n,m;
int ans=0;
struct node{
int x,y;
};
bool check(int x,int y){//未越界&&是细胞&&未走过
return x>=1&&x<=n&&y>=1&&y<=m&&mp[x][y]!='0'&&vis[x][y]==0;
}
void bfs(int x,int y){
queue<node>q;
q.push({x,y});
vis[x][y]=1;
while(!q.empty()){
node t=q.front();
q.pop();
for(int i=0;i<4;i++){
int nx=t.x+dir_x[i];//算下次遍历的位置
int ny=t.y+dir_y[i];
if(check(nx,ny)){
q.push({nx,ny});//递归
vis[nx][ny]=1;
}
}
}
ans++;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){//输入
for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
for(int i=1;i<=n;i++){//判断bfs启动的符合条件
for(int j=1;j<=m;j++){
if(mp[i][j]!='0'&&vis[i][j]==0){//确保遍历的是细胞且未搜索过
bfs(i,j);//启动广搜
}
}
}
cout<<ans;
return 0;
}
全部评论 7
顶!
2024-11-08 来自 上海
0顶!
2024-11-08 来自 上海
0顶!
2024-11-08 来自 上海
0顶!
2024-11-08 来自 上海
0顶!
2024-11-08 来自 上海
0顶!
2024-11-08 来自 上海
0顶!
2024-11-08 来自 上海
0
有帮助,赞一个