2019独角兽企业重金招聘Python工程师标准>>>

河内之塔(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;
}

转载于:https://my.oschina.net/jesonzhang/blog/305803

经典算法大全之河内之塔相关推荐

  1. 20190925:(经典算法系列)河内之塔

    河内之塔 题目 大致思路 代码实现 题目 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883 ...

  2. C语言经典算法 - 双色河内塔的代码

    把内容过程常用的内容片段记录起来,如下的内容内容是关于C语言经典算法 - 双色河内塔的内容,希望能对各位朋友有所好处. #include <stdio.h> void hanoi(int ...

  3. 河内塔c语言编程,C语言经典算法 - 双色河内塔

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. #include void hanoi(int disks,char source,cha ...

  4. JAVA经典算法大全

    JAVA经典算法大全 from http://java-mans.iteye.com/blog/16457031.河内之塔 2.Algorithm Gossip: 费式数列. 3.巴斯卡三角形 4.A ...

  5. 【经典算法大全】收集51种经典算法 初学者必备

    <经典算法大全>是一款IOS平台的应用.里面收录了51种常用算法,都是一些基础问题.博主觊觎了好久,可悲哀的是博主没有苹果,所以从网上下了老奔的整理版并且每个都手敲了一遍. 虽然网上也有博 ...

  6. 计算机语言算法大全,经典算法大全

    标签: 算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时间内获得所要求 ...

  7. 经典算法大全51例——3.杨辉三角(又称帕斯卡三角形)

    经典算法大全51例--3.杨辉三角(又称帕斯卡三角形) 算法目录合集 地址 说明 题目以及个人题解 原理分析 思路一--纵向寻踪 思路二--横向寻踪 代码实现--Java 方式一--纵向寻踪 方式二- ...

  8. 经典算法大全51例——56.老鼠走迷官

    经典算法大全51例--5&6.老鼠走迷官 算法目录合集 地址 说明 题目以及个人题解 说明 题目 原理分析 问题① 原理 代码实现--Java 问题② 原理 代码实现--Java 相关题目其他 ...

  9. c语言 兔子数列螺线图,经典算法大全51例——2.斐波那契数列(兔子数列)

    经典算法大全51例--2.斐波那契数列 算法目录合集 地址 说明 题目 原理分析 代码实现--Java 相关题目其他变形: 1.爬楼梯(来源:力扣LeetCode) 2.兔子成熟期拉长 官方题解 分析 ...

最新文章

  1. 【最爽的日期工具包LocalDate·超爽,超实用】(Java8版本)
  2. 计算机网络之传输层:3、TCP协议
  3. 7.1.8860.142
  4. 流量分析的瑞士军刀:Zeek
  5. (Activiti6.0.0)SpringProcessEngineConfiguration配置bean时属性注入不了,问题已经找到
  6. 《软件工程》总结——第四章
  7. 王爽《汇编语言》笔记(详细)
  8. 用jq实现轮播图片的效果
  9. 压力换算公斤单位换算_压力表单位换算
  10. 【Unity Shader】 Alpha测试
  11. 2017 东北四省赛热身赛 C
  12. linux下root切换普通用户,linux之普通用户与root用户之间切换方法
  13. mac mini 开发android,Mac mini M1上成功启动Ubuntu
  14. 菲尔兹奖得主陶哲轩:解题的策略
  15. apidoc 自动化生成 api接口文档
  16. 381个Android开源项目
  17. Python的静态成员变量和非静态成员变量
  18. 嵌入式 Linux 编程
  19. CityMaker学习教程12 osg模型的创建
  20. maven 如何查询依赖 jar 包版本号

热门文章

  1. 昨天的一个披扣的问题处理到很晚没搞定的原因
  2. 用四张图说清楚Go程序调度的本质
  3. 【1】Docker概述
  4. CCF201612-1 中间数
  5. Spring核心知识
  6. RocketMq发送延迟消息
  7. 网络安全系列之三十九 在Linux中配置访问控制列表ACL
  8. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(3)--为虚拟机指定固定ip
  9. 在 Go 语言中增强 Cookie 的安全性
  10. Delphi INI文件保存与读取