第一格貌似不一定不在范围内呢······
by An__Apple @ 2024-06-30 15:49:23
@[lsy18653707830](/user/1153724)
搜索范围有误,第10行和第20行:
```cpp
#include<iostream>
using namespace std;
int a[10002][10002],t[4][2]= {-1,0,1,0,0,-1,0,1},n;
struct bfs {
int x,y;
};
int main() {
bfs qq[10002];
int head=1,tail=2;
qq[1].x=qq[1].y=0; // 1 - 改为从(0,0)开始
cin>>n;
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
cin>>a[i][j];
}
}
while(head<tail) {
for(int i=0; i<4; i++) {
int tx=qq[head].x+t[i][0], ty=qq[head].y+t[i][1];
if(tx<0||tx>n+1||ty<0||ty>n+1) continue; // 2 - 边界改为n+1
if(a[tx][ty]==0) {
a[tx][ty]=-1;
qq[tail].x=tx;
qq[tail].y=ty;
tail++;
}
}
head++;
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
if(a[i][j]==-1) {
cout<<0<<" ";
} else if(a[i][j]==0) {
cout<<2<<" ";
} else {
cout<<1<<" ";
}
}
cout<<endl;
}
return 0;
}
```
by Nail9 @ 2024-06-30 16:27:03
~~虽然我不知道咋说~~
但我还是把我的AC代码给你吧
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,a[40][40];
int dx[4]={0,0,-1,1};
int dy[4]={-1,1,0,0};
void dfs(int x,int y)
{
a[x][y]=2;
for(int i=0;i<4;i++)
{ int nx=dx[i]+x;
int ny=dy[i]+y;
if(a[nx][ny]==0 && nx>=0 && nx<=n+1 && ny>=0 && ny<=n+1) dfs(nx,ny);
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) cin>>a[i][j];
}
dfs(0,0);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==2) a[i][j]=0;
else if(a[i][j]==0) a[i][j]=2;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
```
by huyinuo @ 2024-06-30 16:30:34
@[huyinuo_ikun](/user/1361758)
南无阿弥陀佛 希望可以帮到你 5年级的我压根看不出错误 ~~但头文件有问题吧~~
by huyinuo @ 2024-06-30 16:34:29
已AC,感谢大佬(已关注)
by lsy18653707830 @ 2024-06-30 16:47:18