C语言实现8数码问题

C语言实现8数码问题

ID:44784860

大小:68.46 KB

页数:14页

时间:2019-10-28

C语言实现8数码问题_第1页
C语言实现8数码问题_第2页
C语言实现8数码问题_第3页
C语言实现8数码问题_第4页
C语言实现8数码问题_第5页
资源描述:

《C语言实现8数码问题》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用1、实验目的(1)熟悉人工智能系统中的问题求解过程;(2)熟悉状态空间中的盲目搜索策略;(3)掌握盲目搜索算法,重点是宽度优先搜索和深度优先搜索算法。2、实验要求用VC语言编程,采用宽度优先搜索和深度优先搜索方法,求解8数码问题3、实验内容(1)采用宽度优先算法,运行程序,要求输入初始状态假设给定如下初始状态S0283164705和目标状态Sg216408753验证程序的输出结果,写出心得体会。(2)对代码进行修改(选作),实现深度优先搜索求解该问题文档实用提示:每次选扩展节点时,从数组的最后一个生成的节点开始找,找一个没有被扩展的节点。这样也需要对节点添加一个是否被扩展过的标志。4源代码

2、及实验结果截图#include#include#include//八数码状态对应的节点结构体structNode{ints[3][3];//保存八数码状态,0代表空格intf,g;//启发函数中的f和g值structNode*next;structNode*previous;//保存其父节点};intopen_N=0;//记录Open列表中节点数目//八数码初始状态intinital_s[3][3]={2,8,3,1,6,4,7,0,5};//八数码目标状态intfinal_s[3][3]={2,1,6,4,0,8,7,5,3};文档实用/

3、/------------------------------------------------------------------------//添加节点函数入口,方法:通过插入排序向指定表添加//------------------------------------------------------------------------voidAdd_Node(structNode*head,structNode*p){structNode*q;if(head->next)//考虑链表为空{q=head->next;if(p->fnext->f){//考虑插入的节点值比链

4、表的第一个节点值小p->next=head->next;head->next=p;}else{while(q->next)//考虑插入节点x,形如a<=x<=b{if((q->ff

5、

6、q->f==p->f)&&(q->next->f>p->f

7、

8、q->next->f==p->f)){p->next=q->next;q->next=p;break;}q=q->next;}if(q->next==NULL)//考虑插入的节点值比链表最后一个元素的值更大q->next=p;}}elsehead->next=p;文档实用}//----------------------------------

9、--------------------------------------//删除节点函数入口//------------------------------------------------------------------------voiddel_Node(structNode*head,structNode*p){structNode*q;q=head;while(q->next){if(q->next==p){q->next=p->next;p->next=NULL;if(q->next==NULL)return;//free(p);}q=q->next;}}//-------

10、-----------------------------------------------------------------//判断两个数组是否相等函数入口//------------------------------------------------------------------------intequal(ints1[3][3],ints2[3][3]){inti,j,flag=0;for(i=0;i<3;i++)文档实用for(j=0;j<3;j++)if(s1[i][j]!=s2[i][j]){flag=1;break;}if(!flag)return1;elseret

11、urn0;}//------------------------------------------------------------------------//判断后继节点是否存在于Open或Closed表中函数入口//------------------------------------------------------------------------intexit_Node(str

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。