题解 | #迷宫问题#

迷宫问题

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

import re


m, n = map(int, input().split())
A = []
for _ in range(m):
    A.append(input().split())
# '0' '1'

# 标记访问   路径记录  当前点记录
def bfs(A, i, j):
    m = len(A)
    n = len(A[0])

    if i == m-1 and j == n-1:
        return 0, [(i, j)]
    if i < 0 or i >= m or j < 0 or j >= n or A[i][j] == '1':
        return m*n, None
    #标记访问
    A[i][j] = '1'
    
    # 当前点i,j 到终点的最短记录 和路径
    path = []
    d_min = m*n

    for ai, aj in [(i-1, j), (i+1, j), (i, j-1), (i, j+1)]:
        d_ij, p_ij = bfs(A, ai, aj)
        if d_ij < d_min:
            d_min = d_ij
            path = p_ij

    return d_min+1, [(i, j)] + path


d , path = bfs(A,0,0)

for p in path:
    print("({},{})".format(p[0],p[1]))

全部评论

相关推荐

杨柳哥:这不是普通人,那这个钱的是天才
点赞 评论 收藏
分享
尊尼获获:闺蜜在哪?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务