queue - 广度优先搜索
1. 思路:从一个节点开始,寻找所有接下来能继续走的点,继续不断寻找,直到找到出口
2. 使用 queue 存储当前正在考虑的节点
from collections import deque
maze = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 1, 0, 0, 0, 1, 0, 1],
[1, 0, 0, 1, 0, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 1, 1, 0, 0, 1],
[1, 0, 1, 1, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 1, 0, 0, 1],
[1, 0, 1, 1, 1, 0, 1, 1, 0, 1],
[1, 1, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]
# (x, y) 四个方向 (URDL): (x, y+1), (x+1, y), (x, y-1), (x-1, y)
dirs = [
lambda x,y: (x, y+1),
lambda x,y: (x+1, y),
lambda x,y: (x, y-1),
lambda x,y: (x-1, y)
]
def print_r(path):
curNode = path[-1]
realpath = []
while curNode[2] != -1:
realpath.append(curNode[0:2])
curNode = path[curNode[2]]
# 把起点放进去
realp