题解 | #迷宫问题#

迷宫问题

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

import sys

starts = [0, 0]
行, 列 = map(int, input().strip().split(" "))
migong, pass1 = [], []
for line in sys.stdin:
    a = line.strip().split(" ")
    migong.append(a)


def justgo(a, pass1):
    if not (0 <= a[0] < 行):
        return False
    elif not (0 <= a[1] < 列):
        return False
    elif migong[a[0]][a[1]] == '1':
        return False
    elif a in pass1:
        return False
    else:
        return True

repass1 = []
def go(starts, pass1):
    if starts[0] == 行-1 and starts[1] == 列-1:
        repass1.append(pass1)
    else:
        if justgo([starts[0] + 1, starts[1]], pass1):
            go([starts[0] + 1, starts[1]], pass1 + [[starts[0] + 1, starts[1]]])
        if justgo([starts[0], starts[1] + 1], pass1):
            go([starts[0], starts[1] + 1], pass1 + [[starts[0], starts[1] + 1]])
        if justgo([starts[0] - 1, starts[1]], pass1):
            go([starts[0] - 1, starts[1]], pass1 + [[starts[0] - 1, starts[1]]])
        if justgo([starts[0], starts[1] - 1], pass1):
            go([starts[0], starts[1] - 1], pass1 + [[starts[0], starts[1] - 1]])

go(starts,pass1)
min1 = min([len(i) for i in repass1])
print('(0,0)')
for i in repass1:
    if len(i) == min1:
        for k in i:
            print(f'({k[0]},{k[1]})')





全部评论

相关推荐

看起来名字可以很长:笑死 我暑期实习阿里云的意向也被 qq 邮箱放在垃圾箱了
点赞 评论 收藏
分享
26应届求职ing:你这是报了豆音四哥的班?双非本硕拿这两个项目写简历里投100多家嵌软也没什么面试,感觉项目简单了,很多人用
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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