@[czk111](/user/682044) 首先这道题朴素的 dfs 可能过不去,其次因为 ```ma[dx][dy]``` 没有初始化,所以不存在 ```&ma[dx][dy]>num```,dfs 只会直接返回。
by Flanksy @ 2023-07-06 18:32:25
@[Flanksy](/user/662295) 所以ma数组该如何初始化呢?
by czk111 @ 2023-07-06 18:33:52
我个人认为只需将其全部设成0就行了
by czk111 @ 2023-07-06 18:34:27
`if(dx>=0&&dx<=n&&dy>=0&&dy<=m&&ma[dx][dy]>num)`
为啥只有当前步数小于之前的最小步数才继续dfs?一开始num和ma[][]都是0也不会满足`ma[dx][dy]>num`呀
by SDFZ_Obvious @ 2023-07-06 18:35:48
@[czk111](/user/682044) 全部填充一个大数。
by Flanksy @ 2023-07-06 18:36:35
@[Flanksy](/user/662295) 哦,我悟了
by czk111 @ 2023-07-06 18:38:01
@[Flanksy](/user/662295) 谢谢大佬
by czk111 @ 2023-07-06 18:38:10
额,似乎又出现了一些问题,填充大数是这样吗?
```cpp
for(int i=1;i<n;i++){
for(int j=1;j<=n;j++){
ma[i][j]=1e9;
}
}
```
by czk111 @ 2023-07-06 18:40:05
第零:此题建议用BFS做,否则马只能从一个点出发到另外的一个点
第一:ma[dx][dy]>num应改为ma[dx][dy]==0,因为ma数组一开始就都等于0,而大于num就永远找不到适合的dx和dy的位置
第二:dx>=0&&dx<=n&&dy>=0&&dy<=m应改为dx>0&&dx<=n&&dy0>0&&dy<=m,因为马不可能跑到0行0列去
第三:cout<<0;应改为cout<<0<<" ";
第四:cout<<ma[i][j];应改为cout<<ma[i][j]<<" ";
by noip_ioi_luck @ 2023-07-06 18:44:18
![](https://cdn.luogu.com.cn/upload/image_hosting/4r6gkf10.png)
额……
by czk111 @ 2023-07-06 18:57:23