Python dfs题解 | #迷宫问题#

迷宫问题

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

import sys

n = 10
m = 10
matrix = [[0] * m for _ in range(n)]
ans = []
move = [(1, 0), (0, 1), (-1, 0), (0, -1)]
vis = [[False] * m for _ in range(n)]


def dfs(a, b):
    if a < 0 or a >= n or b < 0 or b >= m or vis[a][b] == True or matrix[a][b]:
        return False
    vis[a][b] = True
    if a == n - 1 and b == m - 1:
        ans.append((a, b))
        return True
    for x in move:
        next_a = a + x[0]
        next_b = b + x[1]
        if dfs(next_a, next_b):
            ans.append((a, b))
            return True
    return False


while True:
    try:
        n, m = map(int, input().split(' '))
        matrix = [[0] * m for _ in range(n)]
        vis = [[False] * m for _ in range(n)]
        ans = []
        for i in range(n):
            matrix[i] = list(map(int, input().strip().split(' ')))
        dfs(0, 0)
        ans.reverse()
        for i in ans:
            print('(' + str(i[0]) + ',' + str(i[1]) + ')')
    except:
        break

全部评论

相关推荐

AC鸽想进大厂:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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