emmmm,如果BFS过不了,可以试试DFS,类似这样:
```cpp
void dfs(int x,int y)
{
for(int i=0;i<=3;i++)
{
...//移动
}
return;
}
```
再说说思路,可以反向思考,填1里面很难,那就把矩阵外面填充为-1(别忘了备份原矩阵),然后判断,不是1,不是-1,那就添2
此题 $n≤30$ ,完全没问题。
by zhangxisu @ 2023-12-16 17:00:07
@[zhangxisu](/user/486521) 可以这么做是因为1围成的是环,不论如何都能把外圈遍历,类似这样:
```cpp
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++)
{
if(a[1][i]==0) ...;
if(a[n][i]==0) ...;
if(a[i][1]==0) ...;
if(a[i][n]==0) ...;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
...
}
...
}
```
by zhangxisu @ 2023-12-16 17:03:27
@[xwx123456](/user/917301) 你```bfss```函数没返回值,可以改成```void```或者加个```return 0;```
by hdkk @ 2023-12-16 17:24:26
@[zhangxisu](/user/486521) @[hdkk](/user/728778)
已AC
by xwx123456 @ 2023-12-16 18:08:29
efmsa
by ctctlsx @ 2023-12-27 13:16:55