为什么我的输出有一个缺口?
查看原帖
为什么我的输出有一个缺口?
873417
Istruggle楼主2023/7/16 11:22

总是有一个 1 被替换为 2 ,这是为什么?


#include<bits/stdc++.h>
using namespace std;
int n,m[35][35],vis[35][35]={0},a[35][35];
int ne[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
void bfs(int x,int y)
{
  queue<int> q;
  q.push(x);
  q.push(y);
  vis[x][y]=1;
  m[x][y]=2;
  int u,v; 
  while(!q.empty())
  {
  	u=q.front();
  	q.pop();
  	v=q.front();
  	q.pop();
  	m[u][v]=2;
  	for(int i = 0;i<=3;i++)
  	{
  		int a=u+ne[i][0];
  		int b=v+ne[i][1]; 
  		if(a>=1&&a<=n&&b>=1&&b<=n&&vis[a][b]==0&&m[a][b]==0)
  		{
  			q.push(a);
  			q.push(b);
  			vis[a][b]=1;
  		}
  	}
  	
  }
}
int main()
{
  scanf("%d",&n);
  for(int i = 1;i<=n;i++)
  for(int j = 1;j<=n;j++)
  {
  	cin>>m[i][j];
  }
  for(int i  = 1;i<=n;i++)
  for(int j = 1;j<=n;j++)
  {
  	if(m[i][j]==1)
  	{
  		bfs(i+1,j+1);
  		break;
  	}
  }
  for(int i = 1;i<=n;i++)
  {
  	for(int j = 1;j<=n;j++)
      {
  	    cout<<m[i][j]<<" ";
      }
      cout<<endl;
  }
  return 0;
} 
2023/7/16 11:22
加载中...