怎么用dfs深度优先搜索实现走迷宫呀,怎么实现两个坐标中走迷宫出一个路径
1条回答 默认 最新
关注 试着写了一下,应该还可以优化
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)]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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