问题描述
假设有一个网格迷宫,由m行n列的单元格组成,每个单元要么是空地(用1来表示),要么是障碍物(用0来表示),问如何找到从起点到终点的最短路径。
例如图1所示:
网格迷宫的BFS树也成为最短路树如图二所示:
分析
步骤
- (1)将网格迷宫用二维数组存起来。
- (2)将第一个节点加入队列。
- (3)取队首节点,找到队首节点相邻的节点,加入队列(加入的顺序根据你查找的上下左右四个方向的顺序决定)。
- (4)将队首元素出队。
- (5)重复(3)(4)步骤,直到找到终点。
补充
- 为了记录路径,我们用一个path数组记录每一个节点的父节点。
代码
/*❤CYZ*/
#include<iostream>