题解 | 迷宫问题
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
m, n = map(int, input().split())
maze = [[0] * n for _ in range(m)]
for i in range(m):
maze[i] = list(map(int, input().split()))
res = []
def ahead(i, j, pos=[(0, 0)]):
#四个方向试探
if j + 1 < n and maze[i][j + 1] == 0:
if (i, j + 1) not in pos:
ahead(i, j + 1, pos + [(i, j + 1)])
if j - 1 >= 0 and maze[i][j - 1] == 0:
if (i, j - 1) not in pos:
ahead(i, j - 1, pos + [(i, j - 1)])
if i + 1 < m and maze[i + 1][j] == 0:
if (i + 1, j) not in pos:
ahead(i + 1, j, pos + [(i + 1, j)])
if i - 1 >= 0 and maze[i - 1][j] == 0:
if (i - 1, j) not in pos:
ahead(i - 1, j, pos + [(i - 1, j)])
#找到目标点,将这一分pos拷贝输出打印
if (i, j) == (m - 1, n - 1):
for p in pos:
print("(" + str(p[0]) + "," + str(p[1]) + ")")
ahead(0, 0)