问题描述:
给定一个迷宫地图,包含空地、墙壁、起点和终点。迷宫地图由二维数组表示,数组的每个元素代表一个迷宫的单元格。
要求设计一个程序,通过遍历迷宫地图,找出一条从起点到终点的路径。
迷宫地图的规则如下:
- 数组的每个元素值为0表示空地,元素值为1表示墙壁;
- 迷宫地图的起点位置用元素值为2表示;
- 迷宫地图的终点位置用元素值为3表示;
- 路径只能沿着空地移动,不能穿过墙壁;
- 路径只能沿上、下、左、右四个方向移动,不能斜向移动;
输入:
迷宫地图的二维数组,起点和终点的坐标。
输出:
从起点到终点的路径。
算法思路:
可以使用深度优先搜索(DFS)算法来解决迷宫问题。具体步骤如下:
- 创建一个栈,将起点的坐标压入栈中;
- 创建一个二维数组visited,用于记录已经访问过的单元格,初始值全为False;
- 创建一个空路径path,用于保存当前的路径;
- 进入循环,直到栈为空:
- 弹出栈顶元素,将其标记为已访问;
- 如果当前单元格为终点,则返回路径path;
- 否则,将当前单元格的坐标加入路径path;
- 检查当前单元格的四个相邻单元格,如果相邻单元格为可访问的空地且未访问过,则将其坐标压入栈中;
- 如果栈为空,且终点还未找到,则返回空路径。
实现代码如下(使用Python语言):
def dfs(maze, start, end):
stack = [] # 创建栈
stack.append(start) # 将起点压入栈中
visited = [[False] * len(maze[0]) for _ in