#include<bits/stdc++.h>
using namespace std;
int n,ans;
string g[550];
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
struct node{
int x,y;
};
void bfs(int x,int y){
queue<node> q;
q.push({x,y});
g[x][y]='*';//标记
while(q.size()){
node t=q.front();//取队首元素
q.pop();
for(int i=0;i<4;i++){
int nx=t.x+dx[i];
int ny=t.y+dy[i];
if(nx>=1&&nx<=n&&ny>=0&&ny<g[nx].size()&&g[nx][ny]=='#'){
g[nx][ny]='*';//标记
q.push({nx,ny});//入队
}
}
}
}
int main(){
cin>>n;
getline(cin,g[0]);
for(int i=1;i<=n;i++){
getline(cin,g[i]);
for(int j=0;j<g[i].size();j++){
if(g[i][j]!='*'){
if(g[i][j]==' ') g[i][j]='*';//把空格全部替换为*
else g[i][j]='#';//把字母换成#
}
}
}
for(int i=1;i<=n;i++){
for(int j=0;j<g[i].size();j++){
if(g[i][j]=='#'){
bfs(i,j);
ans++;//统计
}
}
}
cout<<ans<<'\n';
return 0;
}
#4样例 #4样例答案:16
我代码答案也是16 但是没过QAQ