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