八数码问题,这里的题意是将序列变为1,2,3,4,5,6,7,8,x的步骤,表示出x的变动,因为进行移动一定是x与某数的互换,所有总体上可以由x的移动来表示
u,d,l,r分别表示上下左右
利用哈希的方式构造结点查找表并且用以检查重复
#include"iostream"
#include"cstring"
#define EPT(m,n) for(int (m)=0;(m)<(n);(m)++)
using namespace std;
const int MAXSIZE = 567890;
const int ESIZE = 9;
typedef char State[ESIZE];
State q[MAXSIZE];
State t = {'1','2','3','4','5','6','7','8','x'};
int head[MAXSI......
阅读全文