- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
回溯法(马周游问题)实验报告
华南师范大学本科生实验报告 姓名_黎国庄_ 学号 20062101247 院系_计算机学院 专业_计算机科学与技术 年级 2006级 班级_2班 _ 小组实验任务分工_ 独立完成 实验时间 2008 年_6_月 3 _日 实验名称 回溯法的应用 指导老师及职称 陈卫东老师 华南师范大学教务处编印 实验课程:算法分析与设计 实验名称:回溯法的应用 (综设型实验) 第一部分 实验内容 1.实验目标 (1) 熟悉使用回溯法求解问题的基本思路。 (2)掌握回溯算法的程序实现方法。 (3)理解回溯算法的特点。 2. 实验任务 (1)从所给定的题目中选择一题,使用回溯法求解之。 (2)用文字来描述你的算法思路,包括解空间、限界函数、算法主要步骤等。 (3)在Windows环境下使用C/C++语言编程实现算法。 (4)记录运行结果,包括输入数据,问题解答及运行时间。 (5)分析算法最坏情况下时间复杂度和空间复杂度。 (6)谈谈实验后的感想,包括关于该问题或类似问题的求解算法的建议。 3. 实验设备及环境 PC;C/C++等编程语言。 4. 实验主要步骤 根据实验目标,明确实验的具体任务; 设计求解问题的回溯算法,并编写程序实现算法; 设计实验数据并运行程序、记录运行的结果; 分析算法时空性能; 实验后的心得体会。 第二部分 问题及算法 问题描述 给出一个88的棋盘,一个放在棋盘某个位置上的马(规定马的走法为走“日”)是否可以好访问每个方格一次,并回到起始位置上?对于马所在其中一格时,它可以走的位置有以下8种情况: 马 所以对于每一个马所在的格子里,马可以走对应的8个方向。 用满8叉树,每一个子树对应马可跳的方向 当要走下一子树(跳下一格)时,该子树可走(还没有走过并且在棋盘里边),即沿该方向走下去,当不可以走,即回溯到上一步,选择另一方向往下走;当该子树的8个子棋都遍历完了(即8个方向都走过了),则回溯到它父亲那里。 重复一直做下去,到棋盘每个格子都走过一遍,而且回到出发点或者找不到路径即结束。算法如下: 输入:V(x,y)马开始的起点 输出:马从第一步到最后一步(64)的先后次序数字没有被穷举 6. x← X中的下一个元素;将x加入v 7. if v为最终解then set flag ← true,且从两个while循环退出 8. else if v是部分解then k ← k+1 {前进} 9. end while 10. 重置X,使得下一个元素排在第一位 11. K ← k-1 {回溯} 12.end while 13.if flag then output v 14.else output “no solution” 4. 算法实现的关键技巧 void exit(point p) 参数:point 功能:计算出下一步可能位置,按其各个位置下一个位置的和压栈到s[]中 算法描述:接受参数传来的值,按次序加上 int horizontal[]={2,1,-1,-2,-2,-1,1,2}; int vertical[]={-1,-2,-2,-1,1,2,2,1}; 再根据legal函数来判断是否合法(x(0~7),y(0~7))是,则保存在point ap[]中,再按各自下一步的数目从大到小排序。最后,将ap[]中的点压栈。 int number(point p) 参数:point 功能:找出当前位置下一步的各种可能位置,计算可能之和 算法描述:接受参数传来的值,按次序加上 int horizontal[]={2,1,-1,-2,-2,-1,1,2}; int vertical[]={-1,-2,-2,-1,1,2,2,1}; 再根据legal函数来判断是否合法(x(0~7),y(0~7))是,则加1并将值返回 void next(point p) 参数:point 功能:/找出各个位置并将其步数记录 算法描述:将其步数记录在board[][]的相应位置,并将这点压栈到s1,判断步数是否小于64,再根据这四个条件选择执行其中的一个,再递归调用next. bool legal(point p) 参数:point 功能:判断是否可行,合法(是否在棋盘上,是否走过) 算法描述 :用这样的语句if((p.x=0)(p.xn)(p.yn)(p.y=0)(board[p.x][p.y]==0)) return true; else return false; 第三部分 实验结果与分析 实验数
您可能关注的文档
最近下载
- 朝花夕拾名著导读练习及答案.pdf VIP
- 乳腺癌根治手术配合.pptx VIP
- Unit 6 Numbers in life Part A Let's talk Count and say 课件人教版英语三年级下册2025.pptx
- chapter 2 中国哲学及宗教.ppt VIP
- 初级统计师资格考试(统计专业知识和实务)模拟题库及答案(运城2025年).docx VIP
- 危急值报告制度及流程Ppt.ppt VIP
- 初中数学与体育融合的跨学科主题教学策略分析教学研究课题报告.docx
- 京瓷 TASKalfa 2554ci 3554ci 彩色复印机中文维修手册.pdf VIP
- 必威体育精装版人教版九年级数学上册-全册课件全集(1215张).pptx VIP
- 海尔WGG 冰箱售后服务手册型号: BCD-430WACS.PDF
文档评论(0)