题解 | #迷宫问题#
迷宫问题
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)
原始一点点的解法 文章被收录于专栏
尽量不借助面向对象的思想,自己去实习具体过程