为什么你的 dfs 从 $(0,0)$ 出发,但在 dfs 中又写了个 `if (x<1||y>n||x<1||y>n||a[x][y]!=0) return;` 来排除最外面这一圈?
by _saltFish_ @ 2022-08-22 16:19:47
建议自己想想这个 `if` 里面到底该写什么。
by _saltFish_ @ 2022-08-22 16:20:40
main函数改成:
```cpp
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>b[i][j];
if(b[i][j]==0) a[i][j]==0;
else a[i][j]==2;
}
}
dfs(1,1);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==0) cout<<"2"<<" ";
else cout<<b[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
```
应该可以了。
by __YLX @ 2022-08-22 16:32:45
还有就是输入`b[i]`后的`if(b[i][j]==0) a[i][j]==0;else a[i][j]==2;`
两个`a[i][j]`后各多打了一个等号。。。
by yuanjing @ 2022-08-22 16:34:37
@[YangLX_2021](/user/664760)
不能从`(1,1)`开始吧
by yuanjing @ 2022-08-22 16:37:16
@[yuanjing](/user/574462) orzorz
by Iverson_ @ 2022-08-22 16:39:22
@[JR_ytxy](/user/661044) orzorz
by Iverson_ @ 2022-08-22 16:39:37
@[Iverson_](/user/602519) 得从 $(0,0)$ 开始,把 dfs 的第二行 `if (x<1||y>n||x<1||y>n||a[x][y]!=0) return;` 改成 `if (x<0||y>n+1||x<0||y>n+1||a[x][y]!=0) return;`
by _saltFish_ @ 2022-08-23 08:19:50
再按照 @[yuanjing](/user/574462) 说的改一下就应该没有问题了。
by _saltFish_ @ 2022-08-23 08:22:07