求大佬找问题!!!代码如下。qwq
查看原帖
求大佬找问题!!!代码如下。qwq
836448
stylus楼主2022/11/20 11:26
#include <bits/stdc++.h>
using namespace std;
bool qq[101][101];
string xxs;
int n,m,sum;
int a[]={-1,-1,-1,0,0,0,1,1,1},b[]={-1,0,1,-1,0,1,-1,0,1};
//上左、上、上右、左、中、右、下左、下、下右。 
struct node{int x,y;};
queue<node> qb;
void bfs(int i,int j){
	qb.push({i,j});
	qq[i][j]=1;
	while(!qb.empty()){
		node hand;
		hand=qb.front();
		qb.pop();
		for(int sx=0;sx<8;sx++){
			int nx=hand.x+a[sx],ny=hand.y+b[sx];
			if(nx<0||nx>=n||ny<0||ny>=m||qq[nx][ny]){continue;}
			qb.push({nx,ny});
			qq[nx][ny]=1;
		}
	}int len=qb.size();
	for(int i=0;i<len;i++)qb.pop();
	return;
}int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>xxs;
		for(int j=0;j<m;j++){
			if(xxs[j]=='.')qq[i][j]=1;
		}
	}for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(!qq[i][j]){
				sum++;
				bfs(i,j);
			}
		}
	}cout<<sum;
	return 0;
}
2022/11/20 11:26
加载中...