7.4 迷宫问题
7.4.1 回溯
蛮力法(brute-force method):穷举所有可能,一一验证。这种方法效率较低。
回溯法(backtracking):通过部分返回来排除解决问题可能途径进而找出正确途径的过程,例如说解决迷宫问题就可以用回溯法。相应的算法称为回溯算法。
7.4.2 设计解决方案
问题细节
- 首先是确定从起点到终点,是否有路径直达;
- 该路径不能出现循环或回路。
用"x"表示已经走过的路,用"o"表示死路,用"X"表示当前位置。
算法描述
寻找出口,从起点出发,检测四周,有哪些方向可走(按上下左右的顺序来检测),找出方向之后,在移动之前,在目前的位置做下标记,如"x"。当遇到死路时,也做下标记"o",然后回到分叉点。如
从起点到终点,也有可能不存在一条路径。
迷宫ADT
- Maze(numRows, numCols):创建迷宫,大小为numRows × numCos,其内所有格子设置为空,起点和终点均为None;<