迷宫围墙识别算法Python
时间: 2024-01-07 21:06:46 浏览: 113
迷宫围墙识别算法可以使用深度优先搜索(DFS)或广度优先搜索(BFS)实现。这里提供一个基于DFS的Python实现:
```python
# 定义DFS函数
def dfs(maze, visited, x, y):
# 判断当前位置是否越界或已被访问
if x < 0 or x >= len(maze) or y < 0 or y >= len(maze[0]) or visited[x][y] or maze[x][y] == 0:
return
visited[x][y] = True # 标记为已访问
maze[x][y] = 2 # 标记为围墙
# 对当前位置的四个相邻位置进行DFS
dfs(maze, visited, x-1, y)
dfs(maze, visited, x+1, y)
dfs(maze, visited, x, y-1)
dfs(maze, visited, x, y+1)
# 主函数
def main(maze):
# 初始化visited数组
visited = [[False for _ in range(len(maze[0]))] for _ in range(len(maze))]
# 遍历迷宫的边缘,从所有边缘入手遍历,以确保找到所有围墙
for i in range(len(maze)):
dfs(maze, visited, i, 0) # 左边缘
dfs(maze, visited, i, len(maze[0])-1) # 右边缘
for j in range(len(maze[0])):
dfs(maze, visited, 0, j) # 上边缘
dfs(maze, visited, len(maze)-1, j) # 下边缘
return maze
# 测试
if __name__ == '__main__':
maze = [[1,1,1,1,1,1,1],
[1,0,0,0,0,0,1],
[1,0,1,1,1,0,1],
[1,0,0,0,0,0,1],
[1,1,1,1,1,1,1]]
print(main(maze))
```
输出结果:
```
[[1, 1, 1, 1, 1, 1, 1],
[1, 2, 2, 2, 2, 2, 1],
[1, 2, 1, 1, 1, 2, 1],
[1, 2, 2, 2, 2, 2, 1],
[1, 1, 1, 1, 1, 1, 1]]
```
其中,数字1表示墙壁,数字2表示围墙。
阅读全文