题解 | #迷宫问题#

迷宫问题

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

'''
该递归方法在有多解时,会把所有解的路径返回出来,

因为每当有一个递归

到达目的地或者遇到死路时,递归会返回到岔路口地区
'''

while True:
    try:
        #构造迷宫
        m,n=list(map(int,input().split()))
        maze=[]
        for k in range(m):
            maze.append(list(map(int,input().split())))

        def step(i, j, pos=[(0,0)]):
            #看能否向下:
            if i+1<=m-1 and maze[i+1][j]==0 and (i+1,j) not in pos:
                step(i+1, j, pos+[(i+1,j)])  # 注意不能用pos.append()
            # 看能否向上:
            if i-1>=0 and  maze[i-1][j]==0 and (i-1,j) not in pos:
                step(i-1, j, pos+[(i-1,j)])
            # 看能否向右:
            if j+1<=n-1 and maze[i][j+1]==0 and (i,j+1)not in pos:
                step(i, j+1, pos+[(i,j+1)])
            # 看能否向左:
            if j-1>=0 and maze[i][j-1]==0 and (i,j-1) not in pos:
                step(i, j-1, pos+[(i,j-1)])
            if i==m-1 and j==n-1:
                for p in pos:
                    print('('+str(p[0])+','+str(p[1])+')')   # 注意不能用print(p)
        step(0,0)
    except:
        break

【牛客站内】华为机试题练习记录

全部评论
最后输出为啥这么写啊??
点赞 回复 分享
发布于 2022-06-02 22:09

相关推荐

Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
10-30 10:16
南京大学 Java
龚至诚:给南大✌️跪了
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务