Python dfs题解 | #迷宫问题#
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
import sys
n = 10
m = 10
matrix = [[0] * m for _ in range(n)]
ans = []
move = [(1, 0), (0, 1), (-1, 0), (0, -1)]
vis = [[False] * m for _ in range(n)]
def dfs(a, b):
if a < 0 or a >= n or b < 0 or b >= m or vis[a][b] == True or matrix[a][b]:
return False
vis[a][b] = True
if a == n - 1 and b == m - 1:
ans.append((a, b))
return True
for x in move:
next_a = a + x[0]
next_b = b + x[1]
if dfs(next_a, next_b):
ans.append((a, b))
return True
return False
while True:
try:
n, m = map(int, input().split(' '))
matrix = [[0] * m for _ in range(n)]
vis = [[False] * m for _ in range(n)]
ans = []
for i in range(n):
matrix[i] = list(map(int, input().strip().split(' ')))
dfs(0, 0)
ans.reverse()
for i in ans:
print('(' + str(i[0]) + ',' + str(i[1]) + ')')
except:
break

查看25道真题和解析