广度优先查找之迷宫问题
一来自集合导入
2
3迷宫=[
4 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
5 [1, 0, 0, 1, 0, 0, 0, 1, 0, 1],
6 [1, 0, 0, 1, 0, 0, 0, 1, 0, 1],
7 [1, 0, 0, 0, 0, 1, 1, 0, 0, 1],
8 [1, 0, 1, 1, 1, 0, 0, 0, 0, 1],
9 [1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
10 [1, 0, 1, 0, 0, 0, 1, 0, 0, 1],
11 [1, 0, 1, 1, 1, 0, 1, 1, 0, 1],
12 [1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
13 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
14 ]
15迪拉姆=[
16x,y: (x,y 1),#右
17x,y: (x 1,y),#下
18x,y: (x,y-1),#左
19x,y: (x-1,y),#上
20 ]
21
22
23 def打印_迷宫_路径(路径):
24打印('迷宫的最短路径为)
25 real_path=[]
26 cur_node=路径[-1]
27 while cur_node[2]!=-1:
28实数_path.append(cur_node[:2])
29 cur_node=路径[cur_node[2]]
30 real_path.append(路径[0][:2])
31 real_path.reverse()
32打印(真实路径)
33
34
35 def迷宫_路径_队列(开始,结束):
36 m_queue=deque()
37m _ queue。追加(*(开始,-1))
38路径=[]
39迷宫[开始[0]][开始[1]]=2
40 while len(m_queue) 0:
41 cur_node=m_queue.popleft()
42 path.append(cur_node)
43 if路径[-1][:2]==end:
44 print_maze_path(路径)
45返回真
46表示目录:中的目录
47 next_node=dir(cur_node[0],cur_node[1])
48 if maze[next _ node[0]][next _ node[1]]==0:
49迷宫[next_node[0]][next_node[1]]=2
50 m_queue.append((*next_node,len(path)-1))
51 else:
52 # 主要操作可用来调整小路序列,介于问题的复杂度,不进行操作
53关
54 else:
55打印('不存在能出迷宫的路径)
56返回假
57
58
59 if __name__=='__main__':
60迷宫_路径_队列((1,1),(1,8))
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/135152.html