生成一个python版的迷宫问题dfs算法
时间: 2023-12-07 09:04:10 浏览: 171
以下是一个Python版的深度优先搜索算法生成迷宫问题的示例代码:
```python
import random
def generate_maze(rows, cols):
# 创建一个 rows 行 cols 列的二维数组,初始化为全 1
maze = [[1] * cols for _ in range(rows)]
# 将起点设置为 (0, 0),并将其标记为 0
start_row, start_col = 0, 0
maze[start_row][start_col] = 0
# 使用深度优先搜索算法生成迷宫
dfs(maze, start_row, start_col)
return maze
def dfs(maze, row, col):
# 定义四个方向:上、下、左、右
directions = [(0, -1), (0, 1), (-1, 0), (1, 0)]
# 随机打乱方向的顺序
random.shuffle(directions)
# 遍历每个方向
for direction in directions:
# 计算新的坐标
new_row, new_col = row + direction[0], col + direction[1]
# 判断新坐标是否越界或已经被访问过
if (new_row < 0 or new_row >= len(maze) or
new_col < 0 or new_col >= len(maze[0]) or
maze[new_row][new_col] == 0):
continue
# 打通当前坐标与新坐标之间的墙壁
if direction == (0, -1): # 左
maze[row][col-1] = 0
elif direction == (0, 1): # 右
maze[row][col+1] = 0
elif direction == (-1, 0): # 上
maze[row-1][col] = 0
elif direction == (1, 0): # 下
maze[row+1][col] = 0
# 递归访问新坐标
dfs(maze, new_row, new_col)
# 生成一个 5x5 的迷宫
maze = generate_maze(5, 5)
# 打印迷宫
for row in maze:
print(row)
```
这个示例代码可以生成一个指定大小的迷宫,并使用深度优先搜索算法生成迷宫的路径。其中,生成迷宫的主要逻辑在 `generate_maze()` 函数中,它首先创建一个二维数组表示迷宫,然后使用深度优先搜索算法从起点开始访问迷宫中的所有格子,并打通相邻格子之间的墙壁,最终生成迷宫的路径。在这个示例代码中,我们使用随机打乱方向的顺序来增加迷宫的随机性。最后,我们打印生成的迷宫,查看迷宫的路径和墙壁的布局。
阅读全文