嘿嘿,我又来发题解啦!(广搜版,不会别看
2024-11-30 14:49:29
发布于:广东
1阅读
0回复
0点赞
#include<iostream>
#include<queue>
using namespace std;
int n,m;
char mp[115][115]; //地图
bool vis[50][50];
//定义方向数组
int dx[]={-1,1,0,0,-1,-1,1,1};
int dy[]={0,0,-1,1,-1,1,-1,1};
struct node{
int x,y,step; //从起点到(x,y)一共step步
}l,r;
void bfs(int x,int y){
queue<node> q; //定义队列
q.push({x,y});
while(q.size()){
r = q.front();
q.pop();
for(int i=0;i<8;i++){
l.x = r.x+dx[i];
l.y = r.y+dy[i];
if(l.x>=1 && l.x<=n && l.y>=1 && l.y<=m && mp[l.x][l.y]=='W'){
mp[l.x][l.y] = '.';
q.push(l);
}
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mp[i][j];
}
}
int sum = 0; //sum统计岛屿数量
//遍历每一个点
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
//为岛屿的时候,数量+1
if(mp[i][j]=='W'){
sum++;
mp[i][j]=0;
bfs(i,j);
}
}
}
cout<<sum;
return 0;
}
全部评论 1
不会别看,看了更不会
2024-11-30 来自 广东
0
有帮助,赞一个