第一个题解
2024-10-04 21:22:09
发布于:江苏
3阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
int dx[6]={0,0,1,0,-1};
int dy[6]={0,1,0,-1,0};
int a[35][35];
int s[35][35];
int n;
struct node{
int x,y;
}l,r;
void f(int x,int y){
queue<node>q;
q.push({x,y});
while(q.size()){
r=q.front();
q.pop();
for(int i=1;i<=4;i++){
l.x=r.x+dx[i];
l.y=r.y+dy[i];
if(l.x>n+1||l.x<0||l.y>n+1||l.y<0)continue;
if(a[l.x][l.y]==1||s[l.x][l.y]==3)continue;
s[l.x][l.y]=3;
q.push(l);
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
s[0][0]=1;
f(0,0);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(s[i][j]==3){
cout<<0<<' ';
}else if(s[i][j]==0&&a[i][j]==0){
cout<<2<<' ';
}else{
cout<<a[i][j]<<' ';
}
}
cout<<endl;
}
return 0;
}
这里空空如也
有帮助,赞一个