题解 | #迷宫问题#

迷宫问题

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]))

全部评论

相关推荐

11-13 20:16
已编辑
厦门理工学院 软件测试
专业嗎喽:硕佬,把学校背景放后面几段,学校背景双非还学院,让人看了就不想往下看。 把实习经历和个人奖项放前面,用数字化简述自己实习的成果和掌握的技能,比如负责项目一次通过率90%,曾4次发现项目潜在问题风险为公司减少损失等等
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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