汉诺塔实验报告.doc

汉诺塔实验报告.doc

ID:52767336

大小:417.00 KB

页数:11页

时间:2020-03-30

汉诺塔实验报告.doc_第1页
汉诺塔实验报告.doc_第2页
汉诺塔实验报告.doc_第3页
汉诺塔实验报告.doc_第4页
汉诺塔实验报告.doc_第5页
资源描述:

《汉诺塔实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、课程设计2012年12月21日目录1、概述42、实验目的43、问题分析54、实验步骤55、流程图66、程序代码:77、程序调试与测试108、结论129、总结15一、概述数据结构是计算机学科非常重要的一门专业基础理论课程,要想编写针对非数值计算问题的高质量程序,就必须要熟练的掌握这门课程设计的知识。另外,他与计算机其他课程都有密切联系,具有独特的承上启下的重要位置。拥有《数据结构》这门课程的知识准备,对于学习计算机专业的其他课程,如操作系统、数据库管理系统、软件工程的都是有益的。二、实验目的通过本实验,掌

2、握复杂性问题的分析方法,了解汉诺塔游戏的时间复杂性和空间复杂性。三、问题分析任务:有三个柱子A,B,C.A柱子上叠放有n个盘子,每个盘子都比它下面的盘子要小一点,可以从上到下用1,2,...,n编号。要求借助柱子B,把柱子A上的所有的盘子移动到柱子C上。移动条件为:1、一次只能移一个盘子;2、移动过程中大盘子不能放在小盘子上,只能小盘子放在大盘子上。分析:首先容易证明,当盘子的个数为n时,移动的次数应等于2^n-1。首先把三根柱子按顺序排成品字型,把所有的圆盘按从大到小的顺序放在柱子A上。根据圆盘的数量

3、确定柱子的排放顺序:若n为偶数,按顺时针方向依次摆放ABC;若n为奇数,按顺时针方向依次摆放ACB。(1)按顺时针方向把圆盘1从现在的柱子移动到下一根柱子,即当n为偶数时,若圆盘1在柱子A,则把它移动到B;若圆盘1在柱子B,则把它移动到C;若圆盘1在柱子C,则把它移动到A。(2)接着,把另外两根柱子上可以移动的圆盘移动到新的柱子上。即把非空柱子上的圆盘移动到空柱子上,当两根柱子都非空时,移动较小的圆盘这一步没有明确规定移动哪个圆盘,你可能以为会有多种可能性,其实不然,可实施的行动是唯一的。反复进行(1)

4、(2)操作,最后就能按规定完成汉诺塔的移动。四、实验步骤1、用c++或c语言设计实现汉诺塔游戏;,2、让盘子数从2开始到7进行实验,记录程序运行时间和递归调用次数;3、画出盘子数n和运行时间t、递归调用次数m的关系图,并进行分析。五、流程图开始输入m(m<=20)是否继续结束输出结果2、否1、是六、程序代码:#include#include//Hanoi塔classHanoi{public:Hanoi(){cout<<"请输入你想玩的层数(1-20):";in

5、put:cin>>floor;if(floor<1

6、

7、floor>20){cout<<"层数错误重新输入:";gotoinput;}cout<

8、r(inti=0;i

9、("cls");cout<<"第"<

10、=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。