题意:已经一个5*5的二维数组,共中0代表可通过,1代表不可。求(0,0)到(4,4)即对角线的最短路,只允许上下左右走。
分析:因为求最短路径,所以是BFS不可DFS。关键在于如何记录走过路径,路径队列每次加入新节点务必记录它的前驱节点,遍历结束后从终点依照前驱节一直找到源点求最短路径(由源点向终点可能多解,需要处理),然后用辅助栈反序。
C/C++源码:
题意:已经一个5*5的二维数组,共中0代表可通过,1代表不可。求(0,0)到(4,4)即对角线的最短路,只允许上下左右走。
分析:因为求最短路径,所以是BFS不可DFS。关键在于如何记录走过路径,路径队列每次加入新节点务必记录它的前驱节点,遍历结束后从终点依照前驱节一直找到源点求最短路径(由源点向终点可能多解,需要处理),然后用辅助栈反序。
C/C++源码: