一个$ m \times n $的长方形场地,0表示可走格子,1表示障碍物。求从 $(1,1)$ 到 $(m,n)$的最短路径。其中可以走存在障碍物的格子,但不能在障碍物上连续走k步。
链接
题解
用BFS和DFS搜索路径都可以,但如果不剪枝的用DFS会TL。用BFS搜索,为队列中的每一项,除了x,y坐标属性之外,再加上当前的k值属性。同时还有需要注意的一点是,这个问题里同一格子可以被多次放入队列,只要它的k值属性或距离d值相比之前有提升。
代码
1 | /* |
To make the world a better place
一个$ m \times n $的长方形场地,0表示可走格子,1表示障碍物。求从 $(1,1)$ 到 $(m,n)$的最短路径。其中可以走存在障碍物的格子,但不能在障碍物上连续走k步。
用BFS和DFS搜索路径都可以,但如果不剪枝的用DFS会TL。用BFS搜索,为队列中的每一项,除了x,y坐标属性之外,再加上当前的k值属性。同时还有需要注意的一点是,这个问题里同一格子可以被多次放入队列,只要它的k值属性或距离d值相比之前有提升。
1 | /* |