搞不懂 #4答案对了但提交不给过
  • 板块P1767 家族
  • 楼主_wl_
  • 当前回复16
  • 已保存回复18
  • 发布时间2025/7/24 18:34
  • 上次更新2025/7/24 22:37:42
查看原帖
搞不懂 #4答案对了但提交不给过
1388686
_wl_楼主2025/7/24 18:34
#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

2025/7/24 18:34
加载中...