80241 - 2026编程挑战赛Python提高组41
统计题目(材料题)
(1)求最短路径
给定一个 n×m 的二维网格,0 表示可通行,1 表示障碍物。从左上角 (0,0) 出发,只能向上下左右移动,求到达右下角 (n-1,m-1) 的最短路径长度(步数)。若无法到达,返回 -1。请补全下面程序中的 5 个空。
01 from collections import deque
02 def shortest_path(grid):
03 n, m = len(grid), len(grid[0])
04 dirs = [(1,0), (-1,0), (0,1), (0,-1)]
05 q = ①
06 visited = [[False]*m for _ in range(n)]
07 visited[0][0] = True
08 while ② :
09 x, y, dist = q.popleft()
10 if ③ :
11 return dist
12 for dx, dy in dirs:
13 nx, ny = x + dx, y + dy
14 if ④ :
15 visited[nx][ny] = True
16 q.append( ⑤ )
17 return -1
||

关注我们