题目
分析
当然了,这道题目出现在了相应的章节,所以自然就用广度优先了。
到了某一层,有两个选择:向上或者向下\(K_i\)层,我们的BFS也就据此展开。当然,必要的边界检查是必要的:向上不能超出顶层,向下不能突破底层。而且新到的楼层不能已经在之前已经访问过。
答案
思考
和DFS相比,BFS一定能找到最短路径;而且,不需要像DFS的一般做法那样,要进行回溯。
一般而言:
BFS不需要回溯的原因:
- BFS是层次遍历,每个点只会被访问一次
- 使用dist数组记录到达每层的最少步数
- 一旦某层被访问过(dist[x]!=-1),就不会再次访问
- 队列保证了先访问的点一定是步数最少的路径
DFS一般需要回溯:
- 因为要尝试所有可能的路径
- 可能会重复访问同一层
- 不能保证找到的是最短路径
- 需要维护访问状态并恢复