tabuloforme @ 2022-09-06 20:28:48
#include<bits/stdc++.h>
using namespace std;
int n,a[40][40];
void bfs(int i,int j){
if(i>1&&j>1&&a[i][j]==0){
a[i][j]=3;
bfs(i+1,j);
bfs(i-1,j);
bfs(i,j+1);
bfs(i,j-1);
}
}
int main(){
cin>>n;
for(int i=0;i<=40;i++){
for(int j=0;j<=40;j++){
a[i][j]=1;
if(i==n+2||i==1||j==n+2||j==1){
a[i][j]=0;
}
}
}
for(int i=2;i<=n+1;i++){
for(int j=2;j<=n+1;j++){
cin>>a[i][j];
}
}
bfs(1,1);
for(int i=2;i<=n+1;i++){
for(int j=2;j<=n+1;j++){
if(a[i][j]==3)cout<<0;
else if(a[i][j]==0)cout<<2;
else cout<<a[i][j];
cout<<" ";
}
if(i!=n+1)cout<<endl;
}
return 0;
}
RT
by ScottSuperb @ 2022-09-06 21:52:02
@tabuloforme 没仔细看你的代码,但对于这题我的理解是典型 floodfill,或许可以直接读入矩阵,设计算法找到圈内任意一点直接填充即可。(口糊的,仅供参考)