意思是中文不解释.(http://acm.hdu.edu.cn/showproblem.php?pid=1430)
思路:
这个话题是直接的BFS会加班(我一开始加班) ,若考虑双向BFS感觉字典序那个地方控制不好,双向BFS也很费时间,其实我们可以打表,只跑一边BFS,以起点
从1、2、3、4、5、6、7、8开始,一直遍历所有状态,答案存在map至于里面map,
还是map一切都可以,只要正确hash就行了,看还有用"康拓公式"哈希的
(个人说没学过),这样一边广搜后,就会得到一个从12345678开始到任何状态的答案,
下面是关键,每次会给我们一组数据,初始状态 s 和 末状态 e ,我们应该找到将主题给出的数据与我们的表数据联系起来的方法,从而设计一个映射关系.
比如:
测试数据是 S 1 2 3 4 到 4 3 2 1
7 8 6 5 8 6 5 7
转换成 S 1 2 3 4 到 4 3 2 1
8 7 6 5 7 6 5 8
事实上,这是八个数字之间的位置关系。以测试数据的位置关系为规则,以1为规则 2 3 4 5 6 7 8
将此规则转换为相应的终点,然后直接输出打表后的答案OK了.
ac代码:
#include
#include
#include
#include
#include
#include