题解 | #迷宫问题#
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
这道题用了经典的栈的思想,用回溯法解决问题
l = []
m, n = list(map(int,input().split()))
for _ in range(m):
s = list(map(int, input().split()))
l.append(s)
d = {}
for x in range(m):
for y in range(n):
d[(x,y)] = l[x][y]
end = (m-1, n-1)
res = [(0,0)]
while res:
x,y = res[-1]
d[(x,y)] = 1
if (x,y) == end:
break
for dx, dy in [(1,0),(-1,0),(0,1),(0,-1)]:
if x+dx == m or y+dy == n or x+dx < 0 or y+dy < 0:
d[(x+dx,y+dy)] = 1
continue
if d[(x+dx,y+dy)] == 0:
d[(x+dx,y+dy)] =1
res.append((x+dx,y+dy))
break
else:
res.pop()
for a,b in res:
print(f'({a},{b})')
