



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 情感化玩具设计中的触觉体验设计考核试卷
- 小升初数学易错专练:计算题(含图形计算)
- 组合图形的个数-小升初数学思维拓展几何图形专项训练
- 糖业企业全球化布局分析考核试卷
- 预习检测卷02(解析版)-2024年九年级化学寒假提升学与练(沪教版)
- 安理工选矿学课件第3章 水力分级
- 电热水器热水供应节能措施
- 制定代理业务操作手册指导实践
- 2024-2025学年福建省福州市福州四中桔园洲中学七年级(下)5月月考数学试卷(含答案)
- 山东省济南市莱芜区2022-2023学年八年级上学期期末生物试题(解析版)
- 2025年全国国家版图知识竞赛测试题库及答案
- 2025年职业技能(工业废水处理工)专业技术及理论知识考试题及答案
- 电网数字化项目工作量度量规范应用指南(2020版)
- GB/T 45051-2024土方机械纯电动非公路矿用自卸车技术要求
- GB/T 45045-2024日用香精中十三种限用香料的测定气相色谱-质谱法
- 钣金安全生产培训
- 《小米之家招商方案》课件
- 电线电缆产品工艺流程图和结构示意图
- 智慧交通大脑一体化管理平台建设方案
- 防范遏制矿山领域重特大生产安全事故硬措施解读
- 国家职业技术技能标准 4-08-07-04 地质调查员 人社厅发20194号
评论
0/150
提交评论