全文预览

启发式搜索算法解决八数码问题(c语言)

上传者:upcfxx |  格式:docx  |  页数:9 |  大小:85KB

文档介绍
0.parent=(node *)malloc(sizeof(node)); s0.parent->hx=9;Рs0.hx=hx(s0.a); open=&s0; p=&s0;РРif(open->hx==0)Р{Рprintf(" 该状态已为最终状态!?\n"); return;Р}РРq=&s0; close=&s0;РРopen=NULL;Рnewlist=extend(q);//newlist 指向新扩展出来的链表Рopen=insert(open,newlist);// 将扩展出来的结点插入到?open 表中РРwhile(1)Р{Рq->next=open;//q 始终指向 close 表尾结点。将 open 表的第一个元素加到?close 表Рopen=open->next; q=q->next;Рq->next=NULL;РРРif(q->hx==0)Р{Рprintf("\n 搜索成功! \n"); break;Р}РРnewlist=extend(q);// 对 close 表最后一个结点进行扩展,扩展得到的链表接到?openР表尾РРopen=insert(open,newlist);// 将扩展的结点按顺序插入到?open 表中Р}РРp=close;Рprintf(" 择优搜索过程如下:?\n"); while(p!=NULL)Р{Рfor(i=0;i<3;i++)Р{Рfor(j=0;j<3;j++)Рprintf("%d ",p->a[i][j]); printf("\n");Р}Рprintf("\n"); p=p->next;Р}Р}РРР2、程序运行结果截图РРР截 图 1: 初始态为: 2?8?3Р1?4Р7?6?5Р运行结果如右图所示:РРР截 图 2:Р初始状态为?2РР8РР3 时,程序运行结果如下:Р1Р6Р4Р7РР5

收藏

分享

举报
下载此文档