我真的服了, 这题解法是真的多
八位数问题好像还是挺有名的
题目就是给你一个3*3的矩阵里面填装这 1-8的数字 空了一个格子,我们的目的就是让这个矩阵排列成
1 2 3
4 5 6
7 8 x x是空出来的
方法1: 无脑 map<string,bool> mp,bfs,dfs,巴拉巴拉乱敲就是了,反正我这题这个方法过不了
方法2:把 x看成9,从1 2 3 4 5 6 7 8 9,搜索所有的状态,记录到达所有状态的路径,输入一个起始状态,直接输出路径,好歹能过
这算是比较笨的办法了,我看到网上有很多A*,双向bfs的,深感自己的弱小
对于这个当前状态的保存,我们用了一个叫做康拓展开的东西,这个东西就很劲,具体的你可以看一下康拓展开的百度百科,讲的是很详细了
相当于是做了一个映射
#include #include #include #include #include #include #include
方法3 双向bfs
为什么我的双向bfs会超空间啊!不管怎么讲,这个代码还是能够运行的,思路至少是对的,也算是一个方法
#include #include #include #include #include #include #include