汉诺塔实验报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

实验报告

课程名称 数据结构

实验名称 汉诺塔

实验类型一 验证性实验

实验地点计304机房实验日期

指导教师 魏海平

专业计算机科学与技术

班级 计算机1002

学号 20

姓名 张森

辽宁石油化工大学计算机与通信工程学院

数据结构实验报告评分表

项目

要求

分数

有无项目(J)

得分

预习报告

(30分)

实验目的明确

5

实验内容理解透彻

5

实验方案

设计完整

合理

程序总体框架设计完整

10

完成相关辅助代码

5

测试方案合理

5

实验过程

(30分)

发现问题

5

问题的分析

15

问题的解决方法

10

实验报告

(20分)

内容翔实无缺漏

5

如实记录实验过程

10

撰写规整

5

实验总结

(10分)

实验结果的分析

5

按照结果对原实验方案的改进意见

5

实验体会

(10分)

实验的收获

5

实验内容的发散考虑

5

总分

.实验目的:

通过本实验,掌握复杂性问题的分析方法,了解汉诺塔游戏的时间复杂性和空间复杂性。

.问题描述:

汉诺塔问题来自一个古老的传说:在世界刚被创建的时候有一座钻石宝塔(塔A),其上有64个金碟。所有碟子按从大到小的次序从塔底堆放至塔顶。紧挨着这座塔有另外两个钻石宝塔(塔B和塔C)。从世界创始之日起,婆罗门的牧师们就一直在试图把塔A上的碟子移动到塔C上去,其间借助于塔B的帮助。每次只能移动一个碟子,任何时候都不能把一个碟子放在比它小的碟子上面。当牧师们完成任务时,世界末日也就到了。

.算法设计思想:

对于汉诺塔问题的求解,可以通过以下三个步骤实现:

(1)将塔A上的n-1个碟子借助塔C先移到塔B上。

(2)把塔A上剩下的一个碟子移到塔C上。

(3)将n-1个碟子从塔B借助于塔A移到塔C上。

.实验步骤:

.用C++或c语言设计实现汉诺塔游戏;

.让盘子数从2开始到7进行实验,记录程序运行时间和递归调用次数;

.画出盘子数n和运行时间t、递归调用次数m的关系图,并进行分析。

实验内容及实验结果

请写出具体的实验步骤,并给出相应的实验结果,附上编写的程序及其运行结果截图!!

#includestdio.h

voidhanio(intn,charA,charB,charC)(

if(n==l)printf(nMovediskfrom%cto%c\n”,A,B);

else{

hanio(n-l,A,C,B);

printf(nMovediskfrom%cto%c\nH,A,B);

hanio(n-l,C,B,A);)

)

voidmain()

(

intn;

printf(ninputthenumberofdisk:1);

scanf(H%dH,n);

printf(thestepsfor%ddiskare:\n*\n);

hanio(n;A;B;C);

)

运行结果:

*D:\lyDocuMents\IyQQFiles程]

3

rnoue1:fronAtoB

noue2:fronAtoC

iioue1:fronBtoC

noue3:fronAtoB

noue1:fronCtoA

noue2:fromCtoB

noue1:fronAtoB

count=7

countl=4

7、结论

通过对上述递归在Hanoi塔问题上的应用分析,我们可以得出如下结论:

1、递归调用过程中,在程序执行之前无法知道控制这种调用栈的规模,因为这一规模取决于递归调用的次序。在这种情况下,程序的地址空间可能动态变化;

2、递归应用于程序设计时,结构清晰、程序易读,编制和调试程序很方便,不需要用户自行管理递归工作栈。但递归应用于计算机时需要占用大量系统资源(包括堆栈、软中断和存贮空间等),并消耗大量处理时间。因此,可以考虑采用并行计算进行处理,但

缓存大小3、递归是串行的,其第n步运算依赖于第n-l步运算,所以在计算机软件理论上不存在递归问题并行计算的可能性。实际上是否存在并行递归计算有待进一步探讨。

缓存大小

入总结

通过对汉诺塔算法的分析让我更清楚的认识到了不同的算法对程序性能的影响,也让我明白掌握了算法将会有助于提高软件的开发。

文档评论(0)

132****2141 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6031032000000005

1亿VIP精品文档

相关文档