上传者: shaoxin0827
|
上传时间: 2020-04-06 00:21:21
|
文件大小: 6KB
|
文件类型: CPP
*问题描述:一个网格迷宫由n行m列的单元格组成,每个单元格要么是空地(用1表示),
* 要么是障碍物(用0 表示)。找出从起点到终点的最短移动序列,其中U,D,L,R,
* 分别代表往上,下,左,右移动到相邻单元格。任何时候都不能在障碍格中,
* 也不能走到迷宫之外,起点和终点保证是空地。n,m<=100.
*
*分析: 可以使用bfs,节点的访问顺序恰好是它们从根节点距离从小到大的顺序。类
* 似的,也可以用bfs来按照起点的距离顺序遍历迷宫图。不断沿着父亲指针走,
* 保存方向序列dir,最后反向输出。
* 比深度优化的效率要高很多,因为每次都定义了活结点还有下一个扩展节点,
* 在活结点当中去寻找扩展节点,不会盲目的搜索到底,而是有一定的选择性。
* 因此我们可以定义记录扩展节点的数组,并且定义函数来判断,看下一层将要
* 被搜索的节点是不是能够作为扩展节点。这就运用到了分支限界的知识。
*