题解 | #迷宫问题#
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
#两个版本,一个DFS,一个回溯 #DFS m, n = list(map(int, input().split())) maze = [] for _ in range(m): maze.append(list(map(int, input().split()))) def dfs(i,j,history): maze[i][j]=1 if i==m-1 and j==n-1: for item in history: print('(' + str(item[0]) + ',' + str(item[1]) + ')') return directions=[(1,0),(-1,0),(0,1),(0,-1)] for direction in directions: ni,nj=i+direction[0],j+direction[1] if 0<=ni<m and 0<=nj<n and maze[ni][nj]==0: dfs(ni,nj,history+[(ni,nj)]) history=[(0,0)] dfs(0,0,history) #回溯 m, n = list(map(int, input().split())) maze = [] for _ in range(m): maze.append(list(map(int, input().split()))) def dfs(i,j): if i==m-1 and j==n-1: for item in history: print('(' + str(item[0]) + ',' + str(item[1]) + ')') return directions=[(1,0),(-1,0),(0,1),(0,-1)] for direction in directions: ni,nj=i+direction[0],j+direction[1] if 0<=ni<m and 0<=nj<n and maze[ni][nj]==0: maze[ni][nj]=1 history.append((ni,nj)) dfs(ni,nj) maze[ni][nj]=0 history.pop() history=[(0,0)] maze[0][0]=1 dfs(0,0)