电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

汉诺塔程序设计报告

汉诺塔程序设计报告_第1页
1/12
汉诺塔程序设计报告_第2页
2/12
汉诺塔程序设计报告_第3页
3/12
VC++作业 电信学院电子0801 班 张海滨 20809050 — 1 — 汉诺塔程序设计报告 一、题目 汉诺塔(Towers of Hanoi)问题 二、设计要求 1、在窗口中画出初始时塔和碟子的状态。 2、可以以自动或手动两种方式搬移碟子。 3、 自动搬移可以通过定时器或多线程的方法,每一次移动的时间间隔可以自定,以人眼观察比较舒服为宜,每一次的移动过程如能实现动画最好。 4、定义塔的描述类和碟子的描述类。 5、 在程序中,碟子的数目及每次移动的时间间隔可以通过对话框设置(也应该有默认值)。 6、支持暂停功和继续的功能(在自动搬移过程中可以暂停,并继续)。 7、暂停后,可以将当前的状态保存(碟子和塔的组合关系)。 8、可以从7 中保存的文件中读出某个状态,并继续移动。 三、问题分析 1、已知有三个塔(1、 2、 3)和n 个从大到小的金碟子,初始状态时 n 个碟子按从大到小的次序从塔1 的底部堆放至顶部。 2、要求把碟子都移动到塔2(按从大到小的次序从塔2 的底部堆放至顶部)。 3、每次移动一个碟子。 — 2 — 4、任何时候、任何一个塔上都不能把大碟子放到小碟子的上面。 5、可以借助塔3。(图1-1) 图 1-1 首先考虑a 杆下面的盘子而非杆上最上面的盘子,于是任务变成了: 1、将上面的63 个盘子移到b 杆上; 2、将a 杆上剩下的盘子移到c 杆上; 3、将b 杆上的全部盘子移到c 杆上。 将这个过程继续下去,就是要先完成移动63 个盘子、62 个盘子、61 个盘子....1 个盘的工作。 四、算法选择 汉诺塔程序设计算法的实质就是递归递归思想的运用。现将其算法简述如下: 为了更清楚地描述算法,可以定义一个函数hanoi(n,a,b,c)。该函数的功能是:将n 个盘子从塔a 上借助塔b 移动到塔c 上。这样移动n个盘子的工作就可以按照以下过程进行: 1) hanoi(n-1,a,c,b);//将 n-1 个金盘由a 借助c 移到b 2) 将最下面的金盘从a 移动到c 上; — 3 — 3) hanoi(n-1,b,a,c); //将 b 上的n-1 个盘借助a 移到c 重复以上过程,直到将全部的盘子移动到塔c 上时为止。 采用递归算法,移动N 个盘子所需步骤数为12n次,64 个盘的移动次数是:18, 446, 744, 073, 709, 551, 615。这是一个天文数字,若每一微秒可能计算(并不输出)一次移动,那么也需要几乎一百万年,盘数为10 时所需步骤为1023 次 ,可借助计算机解决。本程序用于找出问题的解决方法并解决较小N 值...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

汉诺塔程序设计报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部