全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验题目:Hanoi塔问题一、问题描述:假设有三个分别命名为A,B和C的塔座,在塔座B上插有n个直径大小各不相同、从小到大编号为1,2,n的圆盘。现要求将塔座B上的n个圆盘移至塔座A上并仍按同样顺序叠排,圆盘移动时必须遵守以下规则:(1)每次只能移动一个圆盘;(2)圆盘可以插在A,B和C中任一塔上;(3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。要求:用程序模拟上述问题解决办法,并输出移动的总次数,圆盘的个数从键盘输入;并想办法计算出程序运行的时间。二、 算法思路:1、建立数学模型:这个问题可用递归法解决,并用数学归纳法又个别得出普遍解法:假设塔座B上有3个圆盘移动到塔座A上:(1)将塔座B上2个圆盘借助塔座A移动到塔座C上;(2)将塔座B上1个圆盘移动到塔座A上;(3)将塔座C上2个圆盘借助塔座B移动到塔座A上。其中第2步可以直接实现。第1步又可用递归方法分解为:1.1将塔座B上1个圆盘从塔座X移动到塔座A;1.2将塔座B上1个圆盘从塔座X移动到塔座C;1.3将塔座A上1个圆盘从塔座Z移动到塔座C。第3步可以分解为:3.1 将塔座C上1个圆盘从塔座Y移动到塔座B;3.2 将塔座C上1个圆盘从塔座Y移动到塔座A;3.3 将塔座B上1个圆盘从塔座X移动到塔座A。综上所述:可得到移动3个圆盘的步骤为B-A,B-C, A-C, B-A, C-B, C-A, B-A,2、算法设计:将n个圆盘由B依次移到A,C作为辅助塔座。当n=1时,可以直接完成。否则,将塔座B顶上的n-1个圆盘借助塔座A移动到塔座C上;然后将圆盘B上第n个圆盘移到塔座A上;最后将塔座C上的n-1个圆盘移到塔座A上,并用塔座B作为辅助塔座。三、原程序#include#include #include int times = 0;void move(char a, char b) printf(%c - %c n, a,b);void hno(int n,char a , char b, char c) if (n=1) move(a,c); times +; else hno(n-1,a,c,b); move(a,c); times +; hno(n-1,b,a,c); void main()unsigned start,finish; int N; printf(请输入汉诺塔的层数:); scanf(%d,&N); start=GetTickCount();/ hno(N,B,C,A); finish=GetTickCount(); float time=(finish-start)/1000.0; printf(共移动了%d次! n,times); cout总共需要时间为: timeendl;四:五结论分析通过对上述递归在 Hanoi 塔问题上的应用分析,可以得出如下结论: 递归应用中的Hanoi塔问题分析递归应用中的1、Hanoi 塔问题中函数调用时系统所做工作一个函数在运行期调用另一个函数时,在运行被调用函数之前,系统先完成3件事:将所有的实参、返回地址等信息传递给被调用函数保存。 为被调用函数的局部变量分配存储区;将控制转移到被调用函数的入口。从被调用函数返回调用函数前,系统也应完成3件事:保存被调用函数的结果;释放被调用函数的数据区;依照被调用函数保存的返回地址将控制转移到调用函数。当有多个函数构成嵌套调用时,按照“后调用先返回”的原则,上述函数之间的信息传递和控制转移必须通过“栈”来实现,即系统将整个程序运行时所需的数据空间安排在一个栈中,每当调用一个函数时,就为其在栈顶分配一个存储区,每当从一个函数退出时,就释放其存储区,因此当前运行函数的数据区必在栈顶。2、递归调用过程中,在程序执行之前无法知道控制这种调用栈的规模,因为这一规模取决于递归调用的次序。在这种情况下,程序的地址空间可能动态变化; 3、递归应用于程序设计时,结构清晰、程序易读,编制和调试程序很方便,不需要用户自行管理递归工作栈。但递归应用于计算机时需要占用大量系统资源(包括堆栈、软中断和存贮空间等),并消耗大量处理时间。因此,可以考
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宠物芳香疗愈师中级特定宠物如犬猫芳香疗愈方案制定计划
- 供应链管理方案及供应商管理
- 区块链技术应用及解决方案探索
- 2025年内容分发合同协议
- 数字营销时代品牌营销策略与推广方案
- 2025浙江宁波市奉化区交通控股集团有限公司招聘笔试历年参考题库附带答案详解
- 2025广东汕尾市海丰县国有资产监督管理局招聘12名县属国有企业人员和参加人员笔试历年参考题库附带答案详解
- 2025年中国能源建设集团陕西省电力设计院有限公司社会招聘笔试历年参考题库附带答案详解
- 2025山东浪潮集团有限公司社会招聘笔试历年参考题库附带答案详解
- 2025安徽安庆同安控股有限责任公司下属子公司校园招聘拟录用笔试历年参考题库附带答案详解
- 2025高中英语短文改错专项训练80篇
- 2025北京市民政局所属事业单位第二批招聘工作人员31人笔试考试参考题库及答案解析
- 2025年四季度湖南海利高新技术产业集团有限公司招聘100人笔试考试参考试题及答案解析
- 化妆品代理商协议书
- 圆通快递车辆管理制度
- 2025年新教科版三年级上册科学期中测试卷
- 2025年全新科级年轻干部选拔笔试真题及答案解析
- 2025年大学继续教育学院工作人员考试招聘参考题库含参考答案
- 2025设备租赁合同(合同范本)
- 2025-2030中国复合人工皮肤行业市场现状供需分析及投资评估规划分析研究报告
- 室外消防管网施工方案
评论
0/150
提交评论