`
smallearth
  • 浏览: 37442 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

demo03——汉诺塔问题

 
阅读更多


汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上(可以借助第三根柱子做缓冲)。
并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
如图【1.jpg】是现代“山寨”版的该玩具。64个圆盘太多了,所以减为7个,金刚石和黄金都以木头代替了......但道理是相同的。
据说完成大梵天的命令需要太多的移动次数,以至被认为完成之时就是世界末日!
你的任务是精确计算出到底需要移动多少次。
很明显,如果只有2个圆盘,需要移动3次。
圆盘数为3,则需要移动7次。
那么64个呢?

答案写在“解答.txt”中,不要写在这里!


呵呵 想了好一会才发现这其实是个数字游戏,题目里的很多信息都没大用

1 2 3 4 。。。。

1 3 7 15。。。。

仔细看看这俩组数据就会发现,下一个结果是前一个结果乘2加1,问题解决了。

还有就是大数据问题,结果是一个很大的数据,int类型无法表示,我用的double

也可以用Biginteger来解决。

public class demo03 {
  public static void main(String arg[]){
	  double m=0;
	  for(int i=1;i<=64;i++){
		  m=m*2+1;
	  }
	  System.out.println(m);
  }
}

答案:1.8446744073709552E19



分享到:
评论

相关推荐

    java算法——汉诺塔经典的递归

    汉诺塔——经典的递归 *实现移动函数 *递归实现汉诺塔函数

    程序设计中的经典——汉诺塔问题

    汉诺塔问题是一个经典的递归问题,源自印度的古老传说,它涉及到在三个柱子(A、B、C)之间移动一系列盘子,遵循以下规则: 1. **基本规则**:每次只能移动一个盘子。 2. **顺序规则**:任何时候较大的盘子都不能...

    JAVA图形界面程序——汉诺塔演示程序代码

    本篇文章将详细介绍一个用Java语言编写的汉诺塔问题的图形界面演示程序。汉诺塔问题是一种经典的递归算法实例,常用于教授递归思想。在这个程序中,我们将通过Swing库构建一个图形用户界面(GUI),以直观地展示汉诺...

    数据结构课程设计——汉诺塔动态演示.docx

    本项目旨在通过可视化的方式展示汉诺塔问题的解决方案,帮助学习者更好地理解和掌握这一问题的解法。 #### 技术栈与工具 - **Python 3.6**:开发语言 - **Turtle 库**:用于绘制图形和创建动画 - **PyCharm 编辑器*...

    C语言——汉诺塔

    C语言实现汉诺塔、递归。初学者,谢谢

    多柱汉诺塔问题研究论文

    ### 多柱汉诺塔问题研究 #### 引言与背景 汉诺塔问题作为一种经典的数学游戏,由法国数学家爱德华·卢卡斯在1883年提出。传统汉诺塔问题包含三个柱子及多个不同大小的圆盘,玩家的目标是将所有圆盘按照一定规则从...

    经典的递归程序——汉诺塔源代码

    一个经典的递归程序,该程序很简单很清楚,让C++初学者来很好地理解递归的含义。

    汉诺塔问题matlab代码

    汉诺塔问题是一种经典的递归算法问题,源自印度的一个古老传说。在数学和计算机科学领域,它是用来教学和理解递归思想的一个经典实例。在MATLAB中实现汉诺塔问题,我们可以利用其强大的编程功能来解决这个问题。 ...

    汉诺塔演示数据结构课程生计

    栈是线性数据结构的一种,具有先进后出(FILO)的特性,非常适合处理汉诺塔问题中盘子的移动逻辑。 2. 初始化界面,创建不同大小和颜色的矩形块,以区分不同大小的盘子。同时,需要设置一个主函数来协调整个程序的...

    汉诺塔问题算法以及实现

    ### 汉诺塔问题算法及其实现 #### 概述 汉诺塔问题是一个经典的递归算法案例,它不仅在计算机科学领域有着广泛的应用,同时也被用来教授递归思想的基础知识。这个问题最早由法国数学家Édouard Lucas于1883年提出,...

    用栈实现汉诺塔问题

    任意输入N个盘,在三个柱子上实现汉诺塔问题的非递归求解,用栈进行

    汉诺塔问题的拓展 四柱汉诺塔

    算法分析设计中三柱汉诺塔算法的拓展,四柱汉诺塔的设计算法代码

    C语言图形设计—汉诺塔演示实验(TC3.0)

    2. **递归算法**:汉诺塔问题的解决通常依赖于递归方法。递归是函数或程序调用自身的过程,用于解决复杂问题。在这个实验中,我们需要编写一个递归函数来移动盘子,该函数会根据盘子的数量逐步解决问题。 3. **图形...

    汉诺塔问题演示 代码

    汉诺塔问题是一种经典的递归算法问题,源自印度的一个古老传说。它涉及到将一堆盘子从一根柱子移动到另一根柱子,遵循以下规则: 1. 任何时候,盘子必须保持在柱子上。 2. 一次只能移动一个盘子。 3. 盘子不能被比...

    状态空间法解决汉诺塔问题

    利用状态空间法对汉诺塔定义状态,用广度优先的方法解决汉诺塔问题,人工智能.(属于学校学习课程所做,非商业内容)

    汉诺塔问题及变体

    在压缩包中的源代码文件,如`hanoi.cpp`可能包含了基础的汉诺塔问题的递归解决方案,而`hanoiParity.cpp`可能实现了奇偶汉诺塔问题的算法,`hanoiNear.cpp`则可能针对邻近移动汉诺塔问题进行了实现,`hanoiCircle....

    汉诺塔问题 分治法——C++代码

    汉诺塔问题是一个经典的递归与分治法问题,源于印度的一个古老传说。在这个问题中,有三根柱子A、B、C,柱子A上叠着n个大小不一的圆盘,最大的在最下面,最小的在最上面。目标是将所有圆盘从柱子A移动到柱子C,但...

    汉诺塔 源代码 -汉诺塔小程序

    ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码---

    java实现汉诺塔演示及手动操作汉诺塔

    汉诺塔是一个经典的递归问题,它源自一个古老的印度传说。在这个问题中,有三个柱子和一堆不同大小的圆盘,目标是将所有圆盘从一个柱子移动到另一个柱子,遵循以下规则: 1. 一次只能移动一个圆盘。 2. 不允许将大...

    解决汉诺塔问题的算法

    汉诺塔问题C/C++;解决汉诺塔问题的算法;递归

Global site tag (gtag.js) - Google Analytics