障碍物迷宫-固定

这篇博客探讨了一种使用Python解决固定障碍物的迷宫问题的方法。作者通过创建二维列表表示迷宫,并利用队列进行广度优先搜索,寻找从起点到终点的最短路径。在过程中遇到了忘记标记已走过节点的问题,但最终找到了解决方案。文章强调了Python的易用性,并提到未来计划尝试用Java实现相同功能。同时,作者也意识到当前路径表示存在冗余,需要优化以仅显示最佳路径。
摘要由CSDN通过智能技术生成

障碍物迷宫-固定

‘’‘迷宫是固定的,走出来,同样上下左右,0没有障碍物,1 有障碍物’’’

from collections import deque
def migong():
    dx=[1,0,-1,0]
    dy=[0,1,0,-1]
    maze1 = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
    maze = [[0, 1, 0, 0, 0], [0, 0, 0, 1, 0], [0, 1, 0, 1, 0], [1, 1, 1, 0, 0], [0, 1, 0, 0, 1], [0, 1, 0, 0, 0]]
    print("===============原迷宫==========")
    for i in range(len(maze)):
        for j in range(len(maze[i])):
            print(maze[i][j],end=' ')
        print()
    q=deque([(0,0,0)])
    maze[0][0] = 1
    while len(q)>0:
        p=q.popleft()
        for i in range(4):
            x=p[0]+dx[i]
            y=p[1]+dy[i]
            if x<0 or y<0 or x>len(maze)-1 or y> len(maze[0])-1 or maze[x][y] == 1:
                continue
            maze[x][y]=1
            maze1[x][y]=p[2]+1
            q.append((x, y, p[2] + 1))
            if x==len(maze)-1 and y==len(maze[0])-1:
                print("===============最终迷宫==========")
                for i in range(len(maze1)):
                    for j in range(len(maze1[i])):
                        print(maze1[i][j], end=' ')
                    print()
                return p[2]+1
    return -1

print(migong())

在这里插入图片描述

总结

还是做的慢,这次没有用字典用了列表,感觉有那么一点感觉了。两个列表才完成的最后路径的表示,但是这个表示有点问题,把所有节点都表示出来了==,还是要改一下改成只要最佳路径。再做几题就可以带权重了。
障碍物,边界,走过的节点,都一回事,都是不能往下继续的。
python是真的好用,我觉得java我写不出来,等下写一个试试。
1、因为忘记给走过节点赋值,出现过错误

存在问题

1、改只显示最佳路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值