//单向搜索
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<stdbool.h>
#include<string.h>
typedef struct Node DataType;
struct Node{
int status;//状态
int father;//父节点指针
char move;//父节点到本节点方法
};
int goalStatus;
int Flags[362880];
char result[4000];
char MoveWay[]="udrl";
int factorial[15];
DataType Data[362880];
int qHead,qTail;
int IntToInt(int *N)
{
int i,j,n,num=0;
int used[10];
memset(used,0,sizeof(int)*10);
for(i=0;i<9;i++){
n=0;
for(j=0;j<N[i];j++)
if(!used[j])
n++;
num+=n*factorial[9-i-1];
used[N[i]]=1;
}
return num;
}
int CharToInt(char *s)//
{
int i,j,N[10];
for(i=0;i<9;i++)
for(j=0;j<9;j++){
if(s[i]==(j+'0')){
N[i]=j;
break;
}
}
return IntToInt(N);
}
void IntToChar(char *s,int Num)
{
int N[10];
int used[10