河内之塔

  • 题目
  • 大致思路
  • 代码实现

题目

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

大致思路

题解思路:
三个柱子,根据题意,显然中间的B就是我们用来交换时的暂存量。
若只有1个盘子在A上,直接A-C
若只有2个盘子在A,则A-B,A-C,B-C
若3个盘子,则A-C,A-B,C-B,A-C,B-A,B-C,A-C
...
...进入递归过程,简单计算世界末日来临的时间即为:2的64次方-1,1s搬一个盘子,差不多也要5000多亿年。。。。。

代码实现

今天起的所有代码尽可能使用多的代码种类实现,最少使用两种代码实现。
C++实现

#include "stdio.h"void hanoi(int n, char A, char B, char C) {if(n == 1) {printf("%c -> %c\n", A, C);
}
else {//把上面的n-1个盘子当做整体从A移到Bhanoi(n-1, A, C, B);//最后一个从A移到Cprintf("%c -> %c\n", A, C);//再将B上的n-1个盘子当做整体移到Chanoi(n-1, B, A, C);}
}int main(){int n;printf("请输入盘数:");scanf("%d", &n);hanoi(n, 'A', 'B', 'C');return 0;
}

Java实现

package com.immunize.Arithmetic;import java.util.Scanner;/*** 河内之塔实现* * @author Mr IMMUNIZE**/
public class Hanoi {public static void main(String[] args) {System.out.printf("请输入盘数:");Scanner s = new Scanner(System.in);int n = s.nextInt();hanoi(n, 'A', 'B', 'C');}public static void hanoi(int n, char A, char B, char C) {if (n == 1) {System.out.printf("%c -> %c\n", A, C);} else {hanoi(n - 1, A, C, B);System.out.printf("%c -> %c\n", A, C);hanoi(n - 1, B, A, C);}}
}

20190925:(经典算法系列)河内之塔相关推荐

  1. 【C】C语言之经典算法:河内之塔(1)

    文章目录 前言 一.背景 二.思路解析 三.流程图解析 四.代码附上 五.结果 六.参考链接 [C]C语言之经典算法:河内之塔(1) 前言 博主开通了C语言算法专栏,旨在对于有关C语言的一些经典算法的 ...

  2. JAVA经典算法之河内之塔

    1 .河内之塔 说明 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于 1883 年从泰国带至法国的,河内为越战时 北越的首都,即现在的胡志明市: 1883 年法国数学 ...

  3. 经典算法之汉诺塔求解问题

    法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64 ...

  4. 白话经典算法系列之七 堆与堆排序

     堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先解说下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是全然二叉树或者是近似全然二叉树. 二叉堆满 ...

  5. 三白话经典算法系列 Shell排序实现

    山是包插入的精髓排序排序,这种方法,也被称为窄增量排序.因为DL.Shell至1959提出命名. 该方法的基本思想是:先将整个待排元素序列切割成若干个子序列(由相隔某个"增量"的元 ...

  6. 白话经典算法系列之——希尔排序的实现

    希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名. 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个"增量"的 ...

  7. java算法1——河内之塔

      河内之塔游戏规则:有A.B.C三个石棒,A上有若干个从小到大依次排列的盘子,盘子的数量为n,现在要求,将A棒上的盘子依次移动到C棒上,并且移动过程中要保证小盘在大盘之上.   (1)当n=1时:将 ...

  8. 算法之一 河内之塔

    河内之塔介绍 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市:1883年法国数学家 Edouard ...

  9. java算法之———河内之塔

    package demo; /** * 河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时 * 北越的首都,即现在的胡志明市:18 ...

最新文章

  1. MyGeneration学习笔记(1) : 使用MyGeneration生成存储过程和数据访问层代码
  2. werkzeug源码阅读笔记(二) 下
  3. 201503-4 网络延时 (本质是求树的最长路径)
  4. hdu1034 简单模拟
  5. 使用DataWorks来调度AnalyticDB任务
  6. [Java] 蓝桥杯ALGO-113 算法训练 数的统计
  7. JDK API 1.6 中文版 及其简单使用
  8. seaweedfs入门
  9. 一文整理总结常见Java后端面试题系列——Spring篇(2022最新版)
  10. html转化pdf文字无法显示,HTML 转 PDF 排雷 之 wkhtmltopdf 转换得到的PDF没有内容
  11. cdr圆形渐变填充怎么设置_适用于平面设计的软件cdr!
  12. python批量修改照片的大小
  13. 计算机输入法切换用户,电脑的输入法切换不了怎么办,教您如何解决电脑系统输入法...
  14. 青年是科学的未来:JGG诚聘青年编委
  15. 被房地产坑惨的老板电器,终于要“回血”了!
  16. 聊聊Redis的数据热点问题
  17. 时间管理之四象限法则
  18. 【恒指早盘分析】盘点技术分析的三个误区
  19. ISO 13400 DoIP车载以太网标准各Part部分修订和发布状态汇总(Road vehicles-Diagnostic communication over Internet Protocol)
  20. 连连看算法 Unity版

热门文章

  1. Android 10 vs iOS 13,逐鹿手机操作系统之王!
  2. 为什么要追求“极简”代码?
  3. 如何轻松了解 Python 必学的 django 框架?
  4. 三十年软件开发之路:老码农的自我修养!
  5. 2020 年物联网设备达 500 亿台!AI、区块链技术加持,优秀开发者稀缺!
  6. 如何用 200 行 JavaScript 代码实现人脸检测?
  7. 史上最强最贵 Mac Pro 诞生,iPadOS 和 iOS 分家!WWDC19 全面总结
  8. 360度全面抵御黑客攻击的新型芯片来了!
  9. 微信封杀下的互联网江湖
  10. 程序员如何巧妙学习算法技巧?