题解 | #迷宫问题#

迷宫问题

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

def find_out(list_way,i,j,list_map):
    row = len(list_map)-1
    clo = len(list_map[0])-1
    list_map[i][j] = '1' #将当前位置堵上,避免走重复路,造成死循环
    if i == row and j == clo:
        for i in list_way:
            print('({},{})'.format(i[0],i[1]))
        return 
    if i+1 <= row :
        if list_map[i+1][j] == '0':
            list1 = list_way.copy()
            list1.append([i+1,j])
            find_out(list1,i+1,j,list_map)
            #不能直接传入list_way,因为下面的移动也会用到当前这个list_way,不能改变它
    if j +1 <= clo: 
        if list_map[i][j+1] == '0':
            list2 = list_way.copy()
            list2.append([i,j+1])
            find_out(list2,i,j+1,list_map)
    if j -1 >= 0: 
        if list_map[i][j-1] == '0':
            list3 = list_way.copy()
            list3.append([i,j-1])
            find_out(list3,i,j-1,list_map)
    if i -1 >= 0: 
        if list_map[i-1][j] == '0':
            list4 = list_way.copy()
            list4.append([i-1,j])
            find_out(list4,i-1,j,list_map)
    
n ,m = input().split()
list_map = []
for i in range(int(n)):
    t = input().split()
    list_map.append(t)
list_way = [[0,0]]
find_out(list_way,0,0,list_map)

原始一点点的解法 文章被收录于专栏

尽量不借助面向对象的思想,自己去实习具体过程

全部评论
理论上最好是递归函数返回 包含路径的列表 但是正确路径只有一条,其它递归一定是没有返回的,所以请各位大佬改改
点赞 回复 分享
发布于 2023-06-29 16:03 四川

相关推荐

评论
1
收藏
分享
牛客网
牛客企业服务