题解 | #迷宫问题#Python DFS

迷宫问题

https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc

Python 深度优先搜索(Depth First Search,DFS)
def DFS(x, y):
    global n, m, path #全局变量声明
    if x == n-1 and y == m-1: #边界条件,找到终点返回True
        path.append((x,y))
        return True
    if card[x][y]>0: #是否可以到达该点
        return False
    path.append((x,y)) #记录路径
    card[x][y] = 1   #路径痕迹 0 变为 1 说明经过此点
    if x+1<n and DFS(x+1, y): #向下 如果没有数组越界 则在下一个点寻找出口
        return True
    if x-1>=0 and DFS(x-1, y):#向上
        return True
    if y+1<m and DFS(x, y+1):#向右
        return True
    if y-1>=0 and DFS(x, y-1):#向左
        return True
    path = path[:-1] #上面四个条件都不满足则进入死胡同,删除该点
    return False

n, m = map(int, input().split())
path = []  #路径记录
card = []  #保存迷宫
for i in range(n):
    t = list(map(int, input().split()))
    card.append(t)
DFS(0,0) #从0,0 点出发
for i in path: #遍历输出路径
    print(f"({i[0]},{i[1]})")


全部评论

相关推荐

09-19 13:59
门头沟学院 Java
用微笑面对困难:Trae一下,如果真成了,他用了直接发字节起诉代码版权,,这个代码不商用是没问题的如果没成也是情理之中的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务