走迷宫问题python代码
时间: 2023-11-13 15:50:18 浏览: 90
以下是一个基本的走迷宫问题的Python代码:
```python
maze = [[0, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 1, 0, 1, 1, 1, 0],
[0, 0, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 1, 0, 1, 1, 0],
[0, 0, 0, 1, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 1, 1, 0],
[0, 1, 1, 1, 1, 0, 1, 0],
[0, 1, 0, 0, 0, 0, 0, 0]]
def solve_maze(maze, start, end):
dirs = [(0, 1), (1, 0), (-1, 0), (0, -1)]
queue = [start]
while queue:
curr_pos = queue.pop(0)
if curr_pos == end:
return True
for direction in dirs:
next_pos = (curr_pos[0] + direction[0], curr_pos[1] + direction[1])
if (next_pos[0] >= 0 and next_pos[0] < len(maze) and
next_pos[1] >= 0 and next_pos[1] < len(maze[0]) and
maze[next_pos[0]][next_pos[1]] == 0):
queue.append(next_pos)
maze[next_pos[0]][next_pos[1]] = 1
return False
start = (1, 1)
end = (6, 6)
if solve_maze(maze, start, end):
print("Maze is solvable!")
else:
print("Maze cannot be solved.")
```
该代码使用广度优先搜索算法来解决迷宫问题。我们首先定义了一个迷宫的二维列表,其中0表示可以通过的路径,1表示墙或者障碍物。
我们定义了一个solve_maze函数,它接受三个参数:迷宫,起点和终点。我们使用dirs列表来存储四个方向,然后使用一个队列来存储待处理的位置。我们从起点开始,将其加入队列中,并循环处理队列中的位置,直到找到终点或者队列为空。
我们使用dirs列表来计算下一个位置,然后检查该位置是否在迷宫内,是否为0(可以通过的路径),如果是,则将其加入队列中,并将其标记为1(表示已经访问过)。
如果我们找到了终点,则返回True,否则返回False。我们将起点和终点传递给solve_maze函数,并检查是否可以找到一条路径,如果可以,则打印"Maze is solvable!",否则打印"Maze cannot be solved."。
阅读全文