用python写一个走迷宫的代码 要有代码注释
时间: 2024-03-17 07:46:12 浏览: 79
走迷宫代码
好的,这里是一个用 Python 实现的走迷宫的代码,附有注释解释每一步的实现:
```python
# 定义迷宫数组,0 表示通路,1 表示障碍
maze = [
[0, 1, 0, 0, 0],
[0, 1, 0, 1, 0],
[0, 0, 0, 0, 0],
[0, 1, 1, 1, 0],
[0, 0, 0, 1, 0]
]
# 定义起点和终点坐标
start = (0, 0)
end = (4, 4)
# 定义四个方向:上下左右
directions = [(0, 1), (0, -1), (1, 0), (-1, 0)]
def dfs(maze, start, end):
stack = [start] # 定义栈,存放待访问的节点
visited = set() # 定义集合,存放已访问过的节点
while stack:
node = stack.pop() # 取出栈顶节点
if node == end: # 如果已经到达终点,返回 True
return True
visited.add(node) # 将当前节点标记为已访问
for d in directions: # 遍历四个方向
x = node[0] + d[0]
y = node[1] + d[1]
if 0 <= x < len(maze) and 0 <= y < len(maze[0]) and maze[x][y] == 0 and (x, y) not in visited:
stack.append((x, y)) # 如果该方向可行,将该节点加入栈中
return False # 如果栈已空仍未找到终点,返回 False
if dfs(maze, start, end):
print("可以到达终点!")
else:
print("无法到达终点!")
```
这段代码使用了深度优先搜索算法,从起点开始遍历迷宫,如果找到了终点就返回 True,否则返回 False。在每个节点进行遍历时,首先将该节点标记为已访问,然后遍历四个方向,如果该方向可行(不超出边界、不是障碍、未访问过),就将该节点加入栈中。这样就可以保证每次遍历都是先访问当前节点,然后访问该节点的相邻节点。
阅读全文