队列用于存储枚举的节点集合,字典用于记录节点是否访问过,用于排重。...现在的问题的关键就是如何将节点的子节点抽象出来,也就是说从一个状态可以衍生出的所有状态。我们用children函数来表示这个过程,这个函数接收一个输入,得到一个集合。...滑动谜题
在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示.
一次移动定义为选择 0 与一个相邻的数字(上下左右)进行交换....打开转盘锁
你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。...这类谜题有2个共通点,只要满足这2点,我们都可以采用BFS方法解决:
从一个状态可以延续到其他状态;
求从起始状态到达目标状态的最少步骤(最短路径)。