八数码问题源程序及注释: #include #include int n,m; typedef struct Node { char matrix[10];/*存储矩阵*/ char operate;/*存储不可以进行的操作,L 代表不能左移R 代表不能右移U 代表不能上移D 代表不能下移*/ char extend;/*是否可以扩展,Y 代表可以,N 代表不可以*/ int father;/*指向产生自身的父结点*/ }Node; char start[10]={"83426517 "};/*此处没有必要初始化*/ char end[10]={"1238 4765"};/*此处没有必要初始化*/ Node base[4000]; int result[100];/*存放结果的base 数组下标号,逆序存放*/ int match()/*判断是否为目标*/ { int i; for(i=0;i=0) { int mm=result[m]; //clrscr(); printf("\n\n\n 状态方格\t\t 步骤 %d",i); printf("\n\n\n\n\n\t\t\t%c\t%c\t%c\n",base[mm]
matrix[0],base[mm]
matrix[1],base[mm]
matrix[2]); printf("\n\n\t\t\t%c\t%c\t%c\n",base[mm]
matrix[3],base[mm]
matrix[4],base[mm]
matrix[5]); printf("\n\n\t\t\t%c\t%c\t%c\n",base[mm]
matrix[6],base[mm]
matrix[7],base[mm]
matrix[8]); //sleep(1); m--; i++; } } void leave()/*推理成功后退出程