下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、v1.0可编辑可修改八数码问题详解(用bfs实现)八数码问题也称为九宫问题。在3X3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。所谓问题的一个状态就是棋子在棋盘上的一种摆法。棋子移动后,状态就会发生改变。解八数码问题实际上就是找出从初始状态到达目标状态所经过的一系列中间过渡状态。如图:对这道题用bfs解决个人认为是个不错的方法,首先因为它有九个格子,那么便可以用state数组记录他的的九个格子的数值,
2、其中空格为0,后者由于它只有九个数,因此共有9!=362880种可能性,用bfs解决较快。下面给出bfs实现的三种代码(这里的三种指的是对是否访问过已知节点的三种判断方法):1.8这样的数据,0作为判断依据简单于用数据作为判断依据if(si=0)break;x=i/3;y=i%3;z=i;/用hash避免同一状态的再次访问在讲这种方法之前建议读者先看一下算法导论中有关hash的介绍为了方便自己以后看的时候方便,先写一下有关hash的内容Hash表解决冲突三种hash函数:first:除法散列函数:h(k)=kmodm(m为所选的余数,最好选接近装载因子a=n/m,但又远离2的k次哥的质数)se
3、cond:乘法散列法函数:看图:具体代码实现下面有介绍third:全域散列函数h(k)=(ak+b)modp)modm(p>m且p和m都为质数)-1)/2;for(i=num=0;i<le;i+)num=num*10+si;k=(longlong)num;ss=(longlong)(A*(1LL<<w);r0=k*ss%(1LL<<w);ans=r0>>(w-p);returnans;.8这样的数据,0作为判断依据简单于用数据作为判断依据if(si=0)break;x=i/3;y=i%3;z=i;-1)/2;for(i=num=0;i<le
4、;i+)num=num*10+si;k=(longlong)num;ss=(longlong)(A*(1LL<<w);r0=k*ss%(1LL<<w);ans=r0>>(w-p);returnans;.8这样的数据,0作为判断依据简单于用数据作为判断依据if(si=0)break;x=i/3;y=i%3;z=i;stl集合避免重复访问同一状态.8这样的数据,0作为判断依据简单于用数据作为判断依据if(si=0)break;x=i/3;y=i%3;z=i;/记录空的格子的行标,列表,和所在位置,这里的位置按照从左到右从上到下依次递增for(i=0;i<4
5、;i+)/按照上,下,左,右四个方向进行搜索nx=x+deri0;ny=y+deri1;nz=nx*3+ny;if(nx>=0&&nx<3&&ny>=0&&ny<3)state&t=strear;memcpy(&t,&s,sizeof(s); /记录此时的状态即九个格子的数值tz=snz;tnz=sz;disrear=disfront+1;if(try_to_insert(rear)/判断strear这种状态是否已经出现过rear+;front+;return0;intmain(void)intncase,i,oj;scanf("%d",&ncase);while(ncase-)memset(head,0,sizeof(head);for(i=0;i<le;i+)scanf("%d”,&st1i);/按从左到右从上到下的顺序存储数据for(i=0;i<le;i+)scanf("%d",&am
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 齐齐哈尔市梅里斯达斡尔族区2025年数学三年级下学期期末达标测试试题(含答案)
- 黔南布依族苗族自治州惠水县2025-2026学年数学四年级第二学期期末联考模拟试题含解析
- 《可怕的科学》触电惊魂 阅读检测测试卷及答案
- 2025广东江门台山大湾控股发展集团有限公司工作人员聘用笔试历年备考题库附带答案详解
- 2025广东广州花都城投铁工建设工程有限公司招聘项目用工人员笔试人选及安排笔试历年典型考点题库附带答案详解
- 2025年滨州市交通投资发展集团有限公司权属公司公开招聘工作人员(10人)笔试历年典型考点题库附带答案详解
- 2025年淮南寿县联合村镇银行春季招聘笔试历年典型考题及考点剖析附带答案详解
- 2025年河北石家庄辛集市农业投资有限公司笔试历年难易错考点试卷带答案解析
- 英语国测测试卷及答案
- 2026电影欣赏考试题目及答案
- JG/T 84-1999土方机械自卸车术语
- 口腔耗材管理指南
- 家用微波炉加热均匀性改进研究
- 质量安全风险会商汇报模板
- ESG培训课件教学课件
- 【MOOC】运动与健康-湖北大学 中国大学慕课MOOC答案
- 计算机基础教程电子版
- 城市供水排水设备更新维护
- 五年级暑假日记300字50篇
- 冠状动脉搭桥术后的高血脂管理
- 《统计分析与SPSS的应用(第7版)》课件 第7-12章 SPSS的非参数检验-SPSS的判别分析
评论
0/150
提交评论