首页
学习
活动
专区
圈层
工具
发布

Java-河内塔问题

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

20500
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    算法之路(四)----汉诺塔(又称河内之塔)

    寺院的地点众说纷纭,其中一说是位于越南的河内,所以被命名为“河内塔”。另外亦有“金盘是创世时所造”、“僧侣们每天移动一盘”之类的背景设定。...佛教中确实有“浮屠”(塔)这种建筑;有些浮屠亦遵守上述规则而建。“河内塔”一名可能是由中南半岛在殖民时期传入欧洲的。 解答 如取N=64,最少需移动264− 1次。...假设有A、B、C 三个塔,A塔有N块盘,目标是把这些盘全部移动到C塔。那么先把塔顶部的N-1块盘移动到B塔,再把A塔剩下的大盘移动到C,最后把B塔的N-1块盘移动到C。...这里需要一点想象力,可以想象成只有N-1个圆盘,从A塔移动到B塔(此时的B塔其实就相当于上面的C塔),我们称A塔为A1塔,B塔为C1塔,C塔为B1塔,那么问题就变成了如何将N-1个盘从A1塔移动到C1塔...同样的需要将上面的N-2个圆盘从A1塔移动到B1塔,然后将第N-1个圆盘从A1塔移动到C1塔,然后再将B1塔上的N-2个圆盘移动到C1塔。 同理,递推第N-2个塔.....。

    1.9K20

    C++经典算法题-双色、三色河内塔

    12.Algorithm Gossip: 双色、三色河内塔 说明 双色河内塔与三色河内塔是由之前所介绍过的河内塔规则衍生而来,双色河内塔的目的是将下图左上的圆环位置经移动成为右下的圆环位置:...而三色河内塔则是将下图左上的圆环经移动成为右上的圆环: 解法 无论是双色河内塔或是三色河内塔,其解法观念与之前介绍过的河内塔是类似的,同样也是使用递回来解,不过这次递回解法的目的不同,我们先来看只有两个盘的情况...那么三色河内塔呢?一样,直接来看九个盘的情况,首先必须完成下图的移动结果: 接下来最底两层的就不用管它们了,因为它们已经就定位,只要再处理第一柱上面的三个盘子就可以了。...双色河内塔 C 实作 #include void hanoi(int disks, char source, char temp, char target) {...printf("请输入盘数:"); scanf("%d", & n); hanoi2colors(n); return 0; } 三色河内塔

    79120

    Hanoi塔问题

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

    78260

    python练习题-day17

    求满足规律的100以内的所有数据 3、计算x的n次方,如:3的4次方 为3*3*3*3=81 4、汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。...当A塔上有3个盘子时,先将A塔上编号1至2的盘子(共2个)移动到B塔上(需借助C塔),然后将A塔上的3号最大的盘子移动到C塔,最后将B塔上的两个盘子借助A塔移动到C塔上。...当A塔上有n个盘子是,先将A塔上编号1至n-1的盘子(共n-1个)移动到B塔上(借助C塔),然后将A塔上最大的n号盘子移动到C塔上,最后将B塔上的n-1个盘子借助A塔移动到C塔上。...python问题: 请问,到了第10天早上想再吃时,却发现只剩下一个桃子了。 求第一天共摘了多少?

    55910

    Python-汉诺塔原理分析

    最近在“廖雪峰的官方网站”学习Python,遇到汉诺塔递归问题百思不得其解,先是百度了汉诺塔原理,然后查看了别人的写的文章,通过整理汇总,希望能够帮助其他人理解。...汉诺塔原理:(来源于百度百科) 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。...下面贴上代码 # 汉诺塔思想笔记 # 认识汉诺塔的目标:把A柱子上的N个盘子移动到C柱子 # 递归的思想就是把这个目标分解成三个子目标 # 子目标1:将前n-1个盘子从...fr=aladdin ​ ​廖雪峰的官方网站-Python:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000.../001431756044276a15558a759ec43de8e30eb0ed169fb11000 ​ Python技术交流:http://bbs.fishc.com/thread-61965

    66820

    【python-opencv】图像金字塔

    这些具有不同分辨率的图像集称为“图像金字塔”(因为当它们堆叠在底部时,最高分辨率的图像位于顶部,最低分辨率的图像位于顶部时,看起来像金字塔)。 有两种图像金字塔。...1)高斯金字塔和2)拉普拉斯金字塔 1、高斯金字塔 高斯金字塔中的较高级别(低分辨率)是通过删除较低级别(较高分辨率)图像中的连续行和列而形成的。...下面的图像是3层的金字塔从最小的图像在前面的情况下创建。 2、拉普拉斯金字塔 拉普拉斯金字塔由高斯金字塔形成。没有专用功能。拉普拉斯金字塔图像仅像边缘图像。它的大多数元素为零。它们用于图像压缩。...拉普拉斯金字塔的层由高斯金字塔的层与高斯金字塔的高层的扩展版本之间的差形成。拉普拉斯等级的三个等级如下所示(调整对比度以增强内容): ?...只需完成以下步骤即可: 加载苹果和橙子的两个图像 查找苹果和橙子的高斯金字塔(在此示例中, 级别数为6) 在高斯金字塔中,找到其拉普拉斯金字塔 然后在每个拉普拉斯金字塔级别中加入苹果的左半部分和橙子的右半部分

    1.7K20

    关于面试总结5-python笔试题(递归)

    前言 本篇继续收集一些常见的python笔试题,以基础知识为主,递归是面试最喜欢考的一个问题,不管是做开发还是测试,都无法避免考递归。本篇结合实际案例,讲下几种关于递归的场景。 计算n的阶乘 计算n!...方法1:可以用python里面的reduce函数,reduce() 函数会对参数序列中元素进行累积。...汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。...当A塔上有3个盘子时,先将A塔上编号1至2的盘子(共2个)移动到B塔上(需借助C塔),然后将A塔上的3号最大的盘子移动到C塔,最后将B塔上的两个盘子借助A塔移动到C塔上。...当A塔上有n个盘子是,先将A塔上编号1至n-1的盘子(共n-1个)移动到B塔上(借助C塔),然后将A塔上最大的n号盘子移动到C塔上,最后将B塔上的n-1个盘子借助A塔移动到C塔上。

    98430
    领券