数据结构与算法实训项目:迷宫寻路

基于Python语言写在迷宫地图中寻找通路的编程及实现结果

题目:显示迷宫地图,寻找并打印找到的通路,采用字符显示迷宫地图和路径,□表示墙壁,■表示通路。

要求:1. 找出从A1到H10的路径,0表示通行,1表示不通;

           2. 计算路径的步数;

           3. 找出最短的路径。

迷宫地图:

00000000
11011110
10001010
00110010
00100001
10001100
11010000
10010110
11010000
11110010

下面为使用深度优先搜索算法实现迷宫寻路代码:

def find_path(maze, start, end):
    rows, cols = len(maze), len(maze[0])
    visited = [[False] * cols for _ in range(rows)]
    path = []
    
    def dfs(row, col):
        if row < 0 or row >= rows or col < 0 or col >= cols or maze[row][col] == 1 or visited[row][col]:
            return False
        
        visited[row][col] = True
        path.append((row, col))
        
        if (row, col) == end:
            return True
        
        if dfs(row - 1, col) or dfs(row + 1, col) or dfs(row, col - 1) or dfs(row, col + 1):
            return True
        
        path.pop()
        return False
    
    dfs(start[0], start[1])
    
    return path

# 迷宫地图
maze = [
    [0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
    [0, 1, 0, 1, 1, 1, 0, 1, 0, 1],
    [0, 0, 0, 0, 0, 0, 0, 1, 0, 1],
    [1, 1, 1, 1, 1, 1, 0, 1, 0, 1],
    [0, 0, 0, 0, 0, 0, 0, 1, 0, 0],
    [0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 1, 1, 1, 1, 1, 1, 1, 1, 0]
]

start = (0, 0)
end = (9, 7)

path = find_path(maze, start, end)

# 显示迷宫地图和路径
for i in range(len(maze)):
    for j in range(len(maze[0])):
        if (i, j) == start:
            print('A', end=' ')
        elif (i, j) == end:
            print('H', end=' ')
        elif maze[i][j] == 1:
            print('□', end=' ')
        elif (i, j) in path:
            print('■', end=' ')
        else:
            print(' ', end=' ')
    print()

# 计算路径的步数
steps = len(path)
print(f"\n路径的步数为: {steps}")

# 找出最短的路径
shortest_path = find_path(maze, start, end)
if len(shortest_path) < steps:
    print("找到最短路径:")
    for i, (row, col) in enumerate(shortest_path):
        if (row, col) == start:
            print('A', end=' ')
        elif (row, col) == end:
            print('H', end=' ')
        else:
            print('■', end=' ')
        if (i + 1) % 10 == 0:
            print()
else:
    print("没有更短的路径。")

这段代码会先根据迷宫地图找到从A1到H10的路径,并打印出迷宫地图和路径。然后计算路径的步数,并找出最短的路径(如果有更短的路径)。在打印迷宫地图时,□表示墙壁,■表示通路。

下面为迷宫寻路程序实现结果:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值