汉若塔

  • 说明
  • 解法
  • 代码区

说明

说明河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日来临之时。

解法

解法如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘子,就将B当作辅助柱。如果盘数超过2个,将第三个以下的盘子遮起来,就很简单了,每次处理两个盘子,也就是:A->B、A ->C、B->C这三个步骤,而被遮住的部份,其实就是进入程式的递回处理。事实上,若有n个盘子,则移动完毕所需之次数为2^n - 1,所以当盘数为64时,则所需次数为:264- 1 = 18446744073709551615为5.05390248594782e+16年,也就是约5000世纪,如果对这数字没什幺概念,就假设每秒钟搬一个盘子好了,也要约5850亿年左右。

代码区

去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

#include <stdio.h>void hanoi(int n, char A, char B, char C) {if(n == 1) {printf("Move sheet %d from %c to %c\n", n, A, C);}else {hanoi(n-1, A, C, B);printf("Move sheet %d from %c to %c\n", n, A, C);hanoi(n-1, B, A, C);}
}int main() {int n;printf("请输入盘数:");scanf("%d", &n);hanoi(n, 'A', 'B', 'C');return 0;
} 

汉诺塔(又称河内塔)相关推荐

  1. 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。

    import java.math.BigInteger; /* * 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具. 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序 ...

  2. 汉诺塔(河内塔)问题

    汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放 ...

  3. C#之汉诺塔(河内塔)递归问题

    C#之汉诺塔(河内塔)递归问题 前言 一.汉诺塔问题 二.问题思考 1.简单定义一下 2.假设简单的情况 3.推广 4.核心代码 总结 前言 小时候在直板手机上玩过这么一款叫做"汉诺塔&qu ...

  4. PTA汉诺(Hanoi)塔问题

    PTA汉诺(Hanoi)塔问题 古代某寺庙中有一个梵塔,塔内有3个座A.B和C,座A上放着64个大小不等的盘,其中大盘在下,小盘在上.有一个和尚想把这64 个盘从座A搬到座B,但一次只能搬一个盘,搬动 ...

  5. 汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺

    import java.awt.*; import java.awt.event.*; public class hanota extends Frame implements ActionListe ...

  6. 小知识系列(3):Hanoi塔(汉诺塔,河内塔)

    同样,借此来强化学习,但是说实话我写这个感觉很玄.Hanoi塔是昨天刚学到的东西,想了很久,感觉还是没有悟透,可能学到更多新东西,或产生了新的想法,或突然悟到了什么,届时会再做修改. 看了很多关于Ha ...

  7. 汉诺塔(河内塔)问题解析(函数递归经典问题)

    目录 1. 题目描述 2. 题目目标 3. 题目分析 1. 题目描述 在一块铜板装置上,有三根杆(编号A.B.C),在A杆自上而下.由大到下按顺序放置n个盘子. 2. 题目目标 把A杆上的盘子全部转移 ...

  8. 汉诺塔(河内塔)算法与心得

    问题:给定一个由n个圆盘组成的塔,这些圆盘按照大小递减的方式套在三根桩柱中的一根上.我们的目的是要将整个塔移动到另一根桩柱上,每次只能移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面. ...

  9. 汉诺(Hanoi)塔问题

    用C语言解决(Hanoi)汉诺塔问题 首先,我们先给出(Hanoi)汉诺塔问题: 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A ...

  10. java优秀算法河内之塔_河内塔的Java程序

    java优秀算法河内之塔 Tower of Hanoi is a mathematical puzzle where we have three rods and n disks. The objec ...

最新文章

  1. java filesystem 追加_java 如何往已经存在的excel表格里面追加数据的方法
  2. java解析nes_【JVM系列】一步步解析java执行内幕
  3. java venus_来认识一下venus-init——一个让你仅需一个命令开始Java开发的命令行工具...
  4. 一个星期学会python可能吗_学习python的一周
  5. Java_模拟comet的实现
  6. Nginx关于日志记录实例应用
  7. 2021年中国气体分离设备行业运营情况分析:气体分离及液化设备产量14.85万台[图]
  8. 【WPS表格】从身份证号码提取各种信息,如出生日期、年龄、性别、户籍所在地
  9. 【Android驱动】屏和TP谁先休眠的问题
  10. 数商云:打造B2B大宗电商供应链服务系统,落地产业互联网
  11. h5倒计时弹窗_H5活动开始/结束倒计时实现
  12. 推荐几个经常发干货的公众号
  13. 运维工程师发展受限,那么运维转型大数据是个机会吗?
  14. 虚拟化——成功解决使用ovirt安装虚拟机系统时不能正常引导安装
  15. mysql统计去重记录数量_MySQL分组后,如何统计记录条数
  16. 计算机系优秀团员事迹,【国奖风采,榜样力量】真诚,感恩——计算机学院罗惠娴...
  17. Business English-Unit 4 Memos -B
  18. 数据结构 单词查找 二分法-索引表-Hash表
  19. key_t键和ftok函数
  20. 拿两千块钱的薪水要有一万块钱的范儿--蜗居编剧

热门文章

  1. SOLID 软件设计原则
  2. JsonPath完全介绍及详细使用教程
  3. 维特比算法(Viterbi)
  4. linux运维需要掌握的,学习Linux运维需要掌握哪些技能?Linux运维
  5. 【Web前端基础】实验4 图像与多媒体文件
  6. Linux排查错误的命令,运维必备:常见的Linux系统故障及其排查的方法
  7. 网页摘要优化:Description是什么意思和使用攻略
  8. 【UnityShader】游戏角色服饰染色
  9. linux 查看usb日志,Linux中显示系统中USB信息的lsusb命令
  10. driveManager 到datasource 数据源连接的过程演变