



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、八数码c语言代码#in clude<stdio.h>#in clude<stdlib.h> #in clude<memory.h> struct no deint x,y;int cn tdif;int step;int f9;int xy33; queue10000;int map 33;int dir42=-1,0,1,0,0,1,0,-1;int hash10000;int zz9;int f1,f2;struct node sour,dest;int judge( int a)/用逆序数判断是否可达int i,j,k=0;for(i=1;i<9
2、;i+)if(ai) for(j=0;j<i;j+) if(aj>ai) k+;return k;in t cou nt(i nt a,i nt b)/ 计算不一样的个数int i,j;for(i=j=0;i<9;i+)if(ai!=bi)j+;return j;int match(struct node m)判断是否和末状态匹配int i,j;for(i=0;i<9;i+)if(m.fi!=zzi)return 0; return 1;int comp(const void *p,const void *q) struct node *a=(struct node *
3、)p; struct node *b=(struct node *)q; if(a->c ntdif=b->c ntdif) return a->ste p-b->ste p;return a->c ntdif-b->cntdif;int visit(int x)/ 返回 hash 函数值 int i,c nt=1,sum=0; for(i=0;i<9;i+) sum+=xi*c nt+; return sum;void prin t(i nt f3)int i,j; for(i=0;i<3;i+) for(j=0;j<3;j+)prin
4、tf("%d ",fij); prin tf("n");prin tf("n");void bfs()/ 广搜int p, val,i,j,ff9,fli n=0;int head=0;int tail=0;memset(queue,0,sizeof(queue);queuehead=sour;queuehead.c ntdif=co un t(queuehead.f,zz);hashhead=visit(queuehead.f);print(queuehead.xy);/ 打印头结点while(head<=tail)struc
5、t node HH=queuehead+;int sx,sy;for(p=0;p<4;p+)flin=0;for(i=0;i<9;i+)/把头结点的值赋在此ffi=HH.fi;sx=HH.x+dir p0;sy=HH.y+dir p1;if(sx>=0&&sx<3&&sy>=0&&sy<3)ffsx*3+sy=0;ffHH.x*3+HH.y=HH.xysxsy;for(j=0;j<10000;j+)/判断是否是已经有过的状态,看hash表中是否已有 if(hashj=visit(ff)flin=1;bre
6、ak;if(fli n)con ti nue;tail+;for(i=0;i<3;i+)for(j=0;j<3;j+)queuetail.fi*3+j=queuetail.xyij=ffi*3+j;queuetail.ste p=H H.ste p+1;queuetail.x=sx;queuetail.y=sy;queuetail.c ntdif=co un t(queuetail.f,zz);hashtail=visit(queuetail.f);prin t(queuetail.xy);if(match(queuetail)printf(” 共需 %d 步! n”,queuet
7、ail.step);return;qsort(queue+head,tail-head+1,sizeof(queue0),comp);/ 排序,每次选择 cntdif 数目最 小的扩展int mai n()int i,j,a9,b9;printf("请输入初始状态:n"); for(i=0;i<3;i+)for(j=0;j<3;j+)scan f("%d",&map ij); sour.xyij=ma p ij; sour.fi*3+j=ma pij; ai*3+j=ma pij;if(ma pij=0)sour.x=i; sour.y=j; sour.ste p=0; sour.c ntdif=0;printf("请输入终止状态:n"); for(i=0;i<3;i+)for(j=0;j<3;j+)scan f("%d",&map dest.xyij=ma pij; dest.fi*3+j=ma p ij;bi*3+j=ma pij; zzi*3+j=ma pij;prin tf("n");if(judge (a)+judge(b)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人力资源管理师三级考试模拟试卷:招聘与培训管理策略解析与实战
- 2025年征信考试题库:征信信用修复流程法律法规试题
- 2025年小升初数学入学考试模拟题:数学游戏《华容道》的路径规划策略
- 非遗保护与全球文化多样性的平衡
- 合同书(模板)示范文本
- 货场仓储物流项目商业模式
- 老旧市政供水管网更新改造项目背景及必要性分析
- 高中生涯策划
- 保险业与企业文化
- 儿童学业拖延的社会工作介入研究分析 学前教育专业
- 《教育心理学(第3版)》全套教学课件
- 神威药业组织架构设计
- 四川省绵阳市2023-2024学年高一下学期期末考试生物试题
- DL∕T 1917-2018 电力用户业扩报装技术规范
- 边沟施工技术交底滑模
- 苏州江苏苏州工业园区生态环境系统(园区环境执法大队和功能区应环大队)招聘9人笔试历年典型考题及考点附答案解析
- 四川省凉山彝族自治州2023-2024学年部编版八年级历史下期期末检测试卷
- 2024届湖北省武汉市东湖高新区六年级数学小升初摸底考试含解析
- 辽宁省沈阳皇姑区2023-2024学年七年级下学期期末考试语文试题
- 2024年湖南省长沙市中考英语试卷真题(含答案)
- 九宫数独200题(附答案全)
评论
0/150
提交评论