python迷宫代码
以下是一个简单的Python迷宫代码示例:
# 定义迷宫地图
maze = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 1, 1, 0, 1, 1, 0, 1],
[1, 0, 1, 0, 0, 0, 1, 0, 0, 1],
[1, 0, 1, 0, 1, 1, 1, 0, 1, 1],
[1, 0, 1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 1, 1, 1, 1, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]
# 定义起点和终点
start = (1, 1)
end = (7, 8)
# 定义可行方向
directions = [(0, 1), (0, -1), (1, 0), (-1, 0)]
# 定义搜索函数
def search(maze, start, end):
queue = [start]
visited = set()
while queue:
x, y = queue.pop(0)
if (x, y) == end:
return True
for dx, dy in directions:
nx, ny = x + dx, y + dy
if 0 <= nx < len(maze) and 0 <= ny < len(maze[0]) and maze[nx][ny] == 0 and (nx, ny) not in visited:
queue.append((nx, ny))
visited.add((nx, ny))
return False
# 调用搜索函数
if search(maze, start, end):
print("找到了一条路径!")
else:
print("没有找到路径。")
这个代码使用广度优先搜索算法来查找从起点到终点的路径。在搜索过程中,我们使用一个队列来存储待访问的节点,并使用一个集合来存储已经访问过的节点,以避免重复访问。如果找到了一条路径,函数将返回True,否则返回False。
这个代码中,我们首先定义了一个迷宫地图,其中1表示墙壁,0表示可通行的空地。然后我们定义了起点和终点的坐标,以及可行的方向,即向上、向下、向左、向右四个方向。
接下来,我们定义了一个搜索函数search,它接受三个参数:迷宫地图maze、起点坐标start和终点坐标end。在函数中,我们使用一个队列queue来存储待访问的节点,初始时将起点加入队列。同时,我们使用一个集合visited来存储已经访问过的节点,初始时将起点加入visited。
接下来,我们进入一个循环,不断从队列中取出节点进行访问。如果当前节点是终点,说明我们已经找到了一条路径,返回True。否则,我们遍历当前节点的四个可行方向,对于每个可行方向,如果该方向的节点是空地且未被访问过,则将该节点加入队列和visited。
如果循环结束后仍未找到路径,说明不存在从起点到终点的路径,返回False。
最后,我们调用search函数,并根据返回值输出相应的结果。