Documentserialnumber【UU89WT-UU98YT-UU8CB-UUUT-UUT108】八数码c语言代码八数码c语言代码#include<>#include<>#include<>structnode{intx,y;intcntdif;intstep;intf[9];intxy[3][3];}queue[10000];intmap[3][3];intdir[4][2]={{-1,0},{1,0},{0,1},{0,-1}};inthash[10000];intzz[9];intf1,f2;structnodesour,dest;intjudge(inta[]),zz);hash[head]=visit(queue[head].f);print(queue[head].xy);[i*3+j]=queue[tail].xy[i][j]=ff[i*3+j];queue[tail].step=+1;queue[tail].x=sx;queue[tail].y=sy;queue[tail]tdif=count(queue[tail].f,zz);hash[tail]=visit(queue[tail].f);print(queue[tail].xy);if(match(queue[tail])){printf("共需%d步!\n",queue[tail].step);return;}}}qsort(queue+head,tail-head+1,sizeof(queue[0]),comp);//排序,每次选择cntdif数目最小的扩展}}intmain(){inti,j,a[9],b[9];printf("请输入初始状态:\n");for(i=0;i<3;i++)for(j=0;j<3;j++){scanf("%d",&map[i][j]);[i][j]=map[i][j];[i*3+j]=map[i][j];a[i*3+j]=map[i][j];if(map[i][j]==0){=i;=j;=0;=0;}}printf("请输入终止状态:\n");for(i=0;i<3;i++)for(j=0;j<3;j++){scanf("%d",&map[i][j]);[i][j]=map[i][j];[i*3+j]=map[i][j];b[i*3+j]=map[i][j];zz[i*3+j]=map[i][j];}printf("\n");if((judge(a)+judge(b))&1){printf("这个终止状态不可达!");return0;}printf("全局择优搜索状态如下:\n");bfs();printf("OK!\n");return0;}