```cpp
#include<bits/stdc++.h>
using namespace std;
int x[4]={1,-1,0,0};
int y[4]={0,0,-1,1};
int n,a[100][100];
void bfs(int r,int m){
if(r<0||r>=n||m<0||m>=n||a[r][m]==1){
return;
}
a[r][m]=1;//这里
for(int i=0;i<4;i++){
bfs(r+x[i],m+y[i]);
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
if(a[i][j]!=1){
a[i][j]=2;
}
}
}
bfs(0,0);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
```
有输出了,但错的有点离谱
by wangjiawen @ 2023-07-15 17:47:13
@[wangjiawen](/user/305069)
这样的话样例输出变成
1 1 1 1 1 2
1 1 1 1 1 1
1 1 1 2 2 1
1 1 2 2 2 1
1 2 2 2 2 1
1 1 1 1 1 1
不对啊
by doudou0617 @ 2023-07-15 17:53:25
就是不被包围的0也都变成1了
by doudou0617 @ 2023-07-15 17:55:26
我也写了,输出错的离谱。~~最主要的原因是我也没过qwq。~~
by wangjiawen @ 2023-07-15 20:47:04