题解 | #迷宫问题#

迷宫问题

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

这道题用了经典的栈的思想,用回溯法解决问题
l = []
m, n = list(map(int,input().split()))
for _ in range(m):
    s = list(map(int, input().split()))
    l.append(s)
    
d = {}
for x in range(m):
    for y in range(n):
        d[(x,y)] = l[x][y]

end = (m-1, n-1)
res = [(0,0)]
while res:
    x,y = res[-1]
    d[(x,y)] = 1
    if (x,y) == end:
        break
    for dx, dy in [(1,0),(-1,0),(0,1),(0,-1)]:
        if x+dx == m or y+dy == n or x+dx < 0 or y+dy < 0:
            d[(x+dx,y+dy)] = 1
            continue
        if d[(x+dx,y+dy)] == 0:
            d[(x+dx,y+dy)] =1
            res.append((x+dx,y+dy))
            break
    else:
        res.pop()
for a,b in res:
    print(f'({a},{b})')


全部评论

相关推荐

11-11 16:40
已编辑
门头沟学院 人工智能
不知道怎么取名字_:这个有点不合理了,相当于已经毕业了,但还是没转正,这不就是白嫖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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