Hanoi塔问题PPT课件_第1页
Hanoi塔问题PPT课件_第2页
Hanoi塔问题PPT课件_第3页
Hanoi塔问题PPT课件_第4页
Hanoi塔问题PPT课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、【例】 Hanoi(汉诺)塔问题。古代有一个梵塔,塔内有3个座A、B、C,开始时座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从座移到座,但规定每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座。要求编程序输出移动盘子的步骤。,高级语言程序设计 Hanoi塔问题,高级语言程序设计 Hanoi塔问题,解题思路: 要把64个盘子从A座移动到C座,需要移动大约264 次盘子。 老和尚会这样想:假如有另外一个和尚能有办法将上面63个盘子从一个座移到另一座。那么,问题就解决了。此时老和尚只需这样做:,(1) 命令第2个和

2、尚将63个盘子从A座移到B (2) 自己将1个盘子(最底下的、最大的盘子)从A座移到C座 (3) 再命令第2个和尚将63个盘子从B座移到C座,高级语言程序设计 Hanoi塔问题,A,B,C,将63个从A到B,第1个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将63个从A到B,第1个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将1个从A到C,第1个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将1个从A到C,第1个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将63个从B到C,第1个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B

3、,C,将63个从B到C,第1个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将62个从A到C,第2个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将62个从A到C,第2个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将1个从A到B,第2个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将1个从A到B,第2个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将62个从C到B,第2个和尚的做法,高级语言程序设计 Hanoi塔问题,A,B,C,将62个从C到B,第2个和尚的做法,高级语言程序设计 Hanoi塔问题,第3个和尚的做法 第4

4、个和尚的做法 第5个和尚的做法 第6个和尚的做法 第7个和尚的做法 第63个和尚的做法,第64个和尚仅做:将1个从A移到C,高级语言程序设计 Hanoi塔问题,A,B,C,将3个盘子从A移到C的全过程,将2个盘子从A移到B,高级语言程序设计 Hanoi塔问题,A,B,C,将3个盘子从A移到C的全过程,将2个盘子从A移到B,高级语言程序设计 Hanoi塔问题,A,B,C,将3个盘子从A移到C的全过程,将1个盘子从A移到C,高级语言程序设计 Hanoi塔问题,A,B,C,将3个盘子从A移到C的全过程,将1个盘子从A移到C,高级语言程序设计 Hanoi塔问题,A,B,C,将3个盘子从A移到C的全过程

5、,将2个盘子从B移到C,高级语言程序设计 Hanoi塔问题,A,B,C,将3个盘子从A移到C的全过程,将2个盘子从B移到C,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从A移到B的过程,将1个盘子从A移到C,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从A移到B的过程,将1个盘子从A移到C,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从A移到B的过程,将1个盘子从A移到B,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从A移到B的过程,将1个盘子从A移到B,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从A移到B的过程,将1个盘

6、子从C移到B,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从A移到B的过程,将1个盘子从C移到B,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从B移到C的过程,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从B移到C的过程,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从B移到C的过程,高级语言程序设计 Hanoi塔问题,A,B,C,将2个盘子从B移到C的过程,高级语言程序设计 Hanoi塔问题,由上面的分析可知:将n个盘子从A座移到C座可以分解为以下3个步骤: (1) 将A上n-1个盘借助C座先移到B座上 (2) 把A座上剩下的一个盘移到C座上 (3) 将n-1个盘从B座借助于座移到C座上,高级语言程序设计 Hanoi塔问题,编写程序: 用hanoi函数实现子任务和子任务 用printf函数实现子任务 函数调用hanoi(n,one,two.three)表示将n个盘子从“one”座移到“three”座

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论