import java.math.BigInteger;
/*
* 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上(可以借助第三根柱子做缓冲)。
并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
如图【1.jpg】是现代“山寨”版的该玩具。64个圆盘太多了,所以减为7个,
金刚石和黄金都以木头代替了......但道理是相同的。
据说完成大梵天的命令需要太多的移动次数,以至被认为完成之时就是世界末日!
你的任务是精确计算出到底需要移动多少次。
很明显,如果只有2个圆盘,需要移动3次。
圆盘数为3,则需要移动7次。
那么64个呢?
答案写在“解答.txt”中,不要写在这里!
*/
class Demo07_hanoi {
public static void hanoi(int n,char a,char b,char c){
if(n>0){
hanoi(n-1,a,c,b);
//System.out.println(a+"->"+b);
hanoi(n-1,c,b,a);
s++;
}
}
static long s = 0;
public static void main(String[] args){
int n = 10;
System.out.println("圆盘个数\t移动次数");
for(int i=1;i<=n;i++){
s = 0;
hanoi(i,'a','b','c');
System.out.println(i+"  ->\t"+s);
}
System.out.println("由上结果可找到规律为:\n移动次数 = 2的n次方-1(n为圆盘个数)");
System.out.println("64个圆盘的移动次数为:");
BigInteger bi = new BigInteger("2");
bi = bi.pow(64).subtract(BigInteger.ONE);
System.out.println(bi);
}
}

运行结果:

圆盘个数 移动次数
1  ->    1
2  ->    3
3  ->    7
4  ->    15
5  ->    31
6  ->    63
7  ->    127
8  ->    255
9  ->    511
10  ->   1023
由上结果可找到规律为:
移动次数 = 2的n次方-1(n为圆盘个数)
64个圆盘的移动次数为:
18446744073709551615

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

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

    大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘. 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上(可以借助第三根柱子做缓冲). 并且规定, ...

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

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

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

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

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

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

  5. PTA汉诺(Hanoi)塔问题

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

  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 ...

最新文章

  1. 机器学习中常用到的知识点总结
  2. No 'Access-Control-Allow-Origin' header is present on the requested resource.
  3. 请检查网站服务器是否正常.,网站访问不了?如何做自我检查?
  4. SwitchHosts-win32-x64
  5. C/C++ 中变量的声明、定义、初始化的区别
  6. (转)JSP基础精华
  7. adb remount overlayfs的说明
  8. IAR 的精确延时程序(转)
  9. SpringBoot→整合数据层、@Valid参数校验、事务propagation属性、动态SQL、AOP监控执行时间
  10. Python Numpy模块函数np.c_和np.r_学习使用
  11. 对计算机病毒的防治也,对计算机病毒及防范对策研究.doc
  12. 使用certbot在nginx搭建HTTPS 以及 阿里云负载均衡HTTPS搭建
  13. 微信支付证书如何部署在linux,微信支付平台证书更新指引
  14. (32)【文件下载漏洞专题】Filedownload原理、漏洞出现、危害、漏洞利用……
  15. 某zhan sign
  16. 大一大学计算机论文摘要,大学计算机基础小论文
  17. 学习百度Apollo中的决策规划
  18. Acwing 游戏时间 C++ python
  19. [汇编语言][bx]和loop指令
  20. Microsoft Platform SDK Febrary 2003下载(更新VC6的SDK)

热门文章

  1. 蛙蛙推荐:蛙蛙牌网页捕捉器
  2. ping 命令的基本使用
  3. Java小白浅浅浅谈阿里巴巴中台战略思想
  4. 【每日蓝桥】14、一三年省赛Java组真题“三部排序”
  5. Word2010如何隐藏去掉回车符
  6. 使用poi解析Excel
  7. 【JAVA工具类】金额与汉字大小写的转换 金额转换
  8. Outlook账号被封?别慌,一步步教你怎么申诉
  9. Excel如何将多列数据按行合并
  10. python 实现usn读取记录