题解 | #迷宫问题#

迷宫问题

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

import sys
def walk(path, x, y):

    if (y + 1 < col) and (MAP[x][y + 1] == 0) and ((x, y + 1) not in path):
        walk(path + [(x, y + 1)], x, y + 1)

    if y - 1 >= 0 and (MAP[x][y - 1] == 0) and ((x, y - 1) not in path):
        walk(path + [(x, y - 1)], x, y - 1)
    if x + 1 < row and MAP[x + 1][y] == 0 and ((x + 1, y) not in path):
        walk(path + [(x + 1, y)], x + 1, y)

    if x - 1 >= 0 and (MAP[x - 1][y] == 0) and ((x - 1, y) not in path):
        walk(path + [(x - 1, y)], x - 1, y)

    if (x, y) == (row - 1, col - 1):
        for p in path:
            print(f"({p[0]},{p[1]})")


while True:
    try:
        row, col = list(map(int, input().split()))
        MAP = [[i for i in map(int, input().split())] for _ in range(row)]
        path = [(0, 0)]
        walk(path,0,0)
    except:
        break
单路径迷宫问题,回溯方式是按照下一步是否是1不可行,可行就回溯函数,并且注意不能再已走的path中
# print(MAP[0][1])

全部评论

相关推荐

10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务