yangbowen666 @ 2024-07-15 10:03:24
#include<bits/stdc++.h>
using namespace std;
char c[120][120];
int w,h,n;
int tx[5]={0,0,1,0,-1};
int ty[5]={0,1,0,-1,0};
int a[120][3];
int C=0;
bool f[120][120];
int b=n;
void bfs(int x,int y)
{
if(x==n||y==n||x==1||y==1)
{
for(int i=1;i<=b;i++)
{
c[a[i][1]][a[i][2]]='0';
}
return ;
}
f[x][y]=true;
b++;
c[x][y]='2';
a[b][1]=x;
a[b][2]=y;
for(int i=1;i<=4;i++)
{
int fx=x+tx[i];
int fy=y+ty[i];
if(f[fx][fy]==false&&c[fx][fy]=='0')
{
bfs(fx,fy);
}
}
}
int main(){
for(int i=1;i<=20;i++)
{
for(int j=1;j<=20;j++)
{
f[i][j]=false;
}
}
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>c[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(c[i][j]=='0'&&f[i][j]==false)
{
b=0;
bfs(i,j);
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<c[i][j]<<" ";
}
cout<<"\n";
}
return 0;
}
by Enoch2013 @ 2024-07-15 10:05:00
@yangbowen666 ac代码:
#include<bits/stdc++.h>
using namespace std;
int a[35][35],b[35][35],n,dx,dy;
int d[2][4]={{1,-1,0,0},{0,0,1,-1}};
struct node{
int r,c;
};
void BFS(){
node m;
queue<node> q;
m.c=0,m.r=0;
q.push(m);
while(!q.empty()){
node front=q.front();
q.pop();
for(int i=0;i<4;++i){
dx=front.r+d[0][i];
dy=front.c+d[1][i];
if(dx>=0&&dx<=n+1&&dy>=0&&dy<=n+1&&a[dx][dy]==0){
a[dx][dy]=-1;
node m1;
m1.r=dx,m1.c=dy;
q.push(m1);
}
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i)
for(int j=1;j<=n;++j)
scanf("%d",&a[i][j]);
for(int i=0;i<=n+1;++i){
a[0][i]=0;
a[n+1][i]=0;
a[i][0]=0;
a[i][n+1]=0;
}
BFS();
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(a[i][j]==-1)
printf("0 ");
else if(a[i][j]==0)
printf("2 ");
else
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
求关注,qwq