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函数,并根据返回值输出相应的结果。