启发式搜索算法解决八数码问题C语言.doc
《启发式搜索算法解决八数码问题C语言.doc》由会员分享,可在线阅读,更多相关《启发式搜索算法解决八数码问题C语言.doc(9页珍藏版)》请在课桌文档上搜索。
1、word1、程序源代码#include #includestruct nodeint a33;/用二维数组存放8数码 int hx;/函数hx的值,表示与目标状态的差距struct node *parent;/指向父结点的指针struct node *next;/指向链表中下一个结点的指针;/-hx函数-/int hx(int s33)/函数说明:计算s与目标状态的差距值int i,j;int hx=0;int sg33=1,2,3,8,0,4,7,6,5;for(i=0;i3;i+)for(j=0;jnext=NULL;/初始化for(i=0;i3;i+)/找到二维数组中0的位置for(j=
2、0;jaij=0)flag=1;break;if(flag=1)break; for(m=0;ma赋给xfor(n=0;namn;/根据0的位置的不同,对x进展相应的变换/情况1 if(i-1=0)t=xij;xij=xi-1j;xi-1j=t; flag=0;for(m=0;m3;m+)/将x赋给a for(n=0;nparent-amn) flag+; if(flag!=9) q=(node *)malloc(sizeof(node); for(m=0;m3;m+)/将x赋给a for(n=0;namn=xmn; q-parent=ex; q-hx=hx(q-a); q-next=NULL
3、; p-next=q; p=p-next; /情况2 for(m=0;ma重新赋给x,即复原xfor(n=0;namn;if(i+1=2)t=xij;xij=xi+1j;xi+1j=t; flag=0;for(m=0;m3;m+) for(n=0;nparent-amn) flag+; if(flag!=9) q=(node *)malloc(sizeof(node); for(m=0;m3;m+)/将x赋给a for(n=0;namn=xmn; q-parent=ex; q-hx=hx(q-a); q-next=NULL; p-next=q; p=p-next; /情况3for(m=0;ma
4、重新赋给x,即复原xfor(n=0;namn;if(j-1=0) t=xij;xij=xij-1;xij-1=t;flag=0;for(m=0;m3;m+) for(n=0;nparent-amn) flag+; if(flag!=9) q=(node *)malloc(sizeof(node); for(m=0;m3;m+)/将x赋给a for(n=0;namn=xmn; q-parent=ex; q-hx=hx(q-a); q-next=NULL; p-next=q; p=p-next; /情况4for(m=0;ma重新赋给x,即复原xfor(n=0;namn;if(j+1=2) t=xi
5、j;xij=xij+1;xij+1=t; flag=0;for(m=0;m3;m+) for(n=0;nparent-amn) flag+; if(flag!=9) q=(node *)malloc(sizeof(node); for(m=0;m3;m+) for(n=0;namn=xmn; q-parent=ex; q-hx=hx(q-a); q-next=NULL; p-next=q; p=p-next; head=head-next;return head;/-extend函数end-/-insert函数-/ node* insert(node *open,node * head) /函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 启发式 搜索 算法 解决 数码 问题 语言
链接地址:https://www.desk33.com/p-6862.html