特别声明:紫书上抄来的代码,详见P198
题目描述
在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。
输入输出格式
输入格式:
输入初试状态,一行九个数字,空格用0表示
输出格式:
只有一行,该行只有一个数字,表示从初始状态到目标状态需要的最少移动次数(测试数据中无特殊无法到达目标状态数据)
输入输出样例
输入样例#1:
283104765
输出样例#1:
4
判重一 //set
代码
判重二 //hash
代码
判重三 //编码(只适用于码数很小的情况下,比如30!就不行)
代码
总结起来就是:效率 hash>编码>set
另外这里有一个详细的转载:http://blog.csdn.net/ouxijv/article/details/7203027