单词分析
题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可以通行的地方。
010000
000100
001001
110000
迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。
对于上面的迷宫,从入口开始,可以按 DRRURRDDDR 的顺序通过迷宫, 一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。 对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式,其使用的步数最少,在步数最少的前提下,请找出字典序最小的一个作为答案。
请注意在字典序中 D<L<R<U。
代码
nums=[]
for i in range(30):
nums.append([int(x) for x in input()])
#经过的路
see=set()
#可以前进的条件
def arr(x,y):
if x<0 or y<0 or x>=30 or y>=50 or nums[x][y]==1 or ((x,y) in see):
return False
return True
def BFS(x,y):
que=[(x,y,"")]
while que:
x,y,z=que.pop(0)#取出
if arr(x,y):#判断失败后再次执行上一步取出
see.add((x,y))#走过的路(判断成功后添加)
que.append((x+1,y,z+"D"))
que.append((x,y-1,z+"L"))
que.append((x,y+1,z+"R"))
que.append((x-1,y,z+"U"))
if x==29 and y==49:
return z
print(BFS(0,0))
个人思路
无,如代码注释