八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。(用0表示空格)
思路:把八数码问题归结为图上的最短路问题。开始状态对应起点,目标状态对应终点。用广搜去搜索就可以了。
用STL的map来判重。也可以用set来判重。我看其他大神的博客说用hash表来判重会更快,还有用双向搜索来做的,有兴趣的可以自己写写。
http://www.cnblogs.com/FreeDestiny/archive/2011/10/27/2226709.html
#include
#include
#include
#include
#include
#include
#include
#include