题解 | #迷宫问题#
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
import sys
maze_y,maze_x = map(int, input().split())
array = []
for x in range(maze_y):
array.append(list(map(int, input().split())))
def bfs(start, end):
quene = [(start,[start])] # 起点和路径
DELTA = ((1,0),(-1,0),(0,1),(0,-1))
visited =set()
if start == end:
return start
while quene:
status, path = quene.pop(0)
x,y = status
if status == end:
return path
for z in DELTA:
m_x, m_y = z
next_x, next_y = x+m_x, y+m_y
if next_x < 0 or next_y < 0 or next_x >(maze_x-1) or next_y>(maze_y-1): #出界
continue
if array[next_y][next_x] == 1:
continue
new_status = next_x, next_y
if new_status not in visited:
visited.add(new_status)
quene.append((new_status, path+[new_status]))
return None
r = bfs((0,0),(maze_x-1,maze_y-1))
for x in r:
print(f'({x[1]},{x[0]})')

嘉士伯公司氛围 613人发布