lingzixi 2022-06-27 17:43 采纳率: 78.6%
浏览 38
已结题

深度优先搜索怎么实现走迷宫呀

怎么用dfs深度优先搜索实现走迷宫呀,怎么实现两个坐标中走迷宫出一个路径

img

  • 写回答

1条回答 默认 最新

  • 请叫我问哥 Python领域新星创作者 2022-06-27 19:04
    关注

    试着写了一下,应该还可以优化

    def findpath(puzzle, start, end):
        d = [(-1,0),(0,1),(1,0),(0,-1)]
        vis = [[-1 for _ in range(len(puzzle[0]))] for _ in range(len(puzzle))]
        vis[start[0]][start[1]]=start
        dfs = [start]
        while dfs:
            x,y = dfs.pop()
            for i in range(4):
                m = x+d[i][0]
                n = y+d[i][1]
                if 0<=m<len(puzzle) and 0<=n<len(puzzle[0]) and puzzle[m][n]==0 and vis[m][n]==-1:
                    dfs.append((x,y))
                    dfs.append((m,n))
                    vis[m][n]=(x,y)
                    if end==(m,n):return dfs
                    break   
        return dfs
    
    puzzle = [
        [0,0,0,0],
        [0,1,1,0],
        [0,0,1,1],
        [1,0,0,0]
    ]
    start = eval(input("请输入起始坐标(x,y):"))
    end = eval(input("请输入终点坐标(m,n):"))
    res = findpath(puzzle, start, end)
    if res:print(res)
    else: print('无路可走')
    

    测试:

    请输入起始坐标(x,y)(0,0)
    请输入终点坐标(m,n)(3,3)
    [(0, 0), (1, 0), (2, 0), (2, 1), (3, 1), (3, 2), (3, 3)]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月5日
  • 已采纳回答 6月27日
  • 创建了问题 6月27日

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line