求高人指点

P1443 马的遍历

@[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


| 下一页