首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    汉诺塔(三)

    汉诺塔(三) 描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。...印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。...僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。 现在我们把三根针编号为1,2,3。...2、把一个大的金片移动到了小的金片上。...输入第一行输入一个整数N表示测试数据的组数(N的第一行有两个整数P,Q(1汉诺塔的层数与随后指令的条数 随后的Q行,每行都输入两个整数a,b,

    77210

    C语言解决汉诺塔问题【C语言&汉诺塔】

    问题背景 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。...要解决这个问题我们需要用到函数递归的思想。...运用函数递归解决汉诺塔问题 函数递归的思想就是将复杂的问题简单化 我们可以先考虑2个圆盘的情况下,先a->b然后a->c最后b->c 我们在考虑3个圆盘的情况,用图片表示 通过这两个例子我们可以观察到要将...n个盘子移动到C 就要先将n-1个盘子移动到B,由此我们可以已得到一个思路 代码实现的思路主要为三步: 假设移动n个盘子 1.将A柱上的n-1个盘子借助C柱移动到B柱 2.再将A柱上仅剩的最后一个盘子移动到...那么本次的文章就到这里了,下次再见吧。

    31410

    汉诺塔问题

    汉诺塔问题   最近面试题遇到过汉诺塔的问题,当时竟然懵逼了,不会了!!大学研究的问题竟然都忘光了,于是抓紧捡起来。然而在网上看了看博客,发现非递归算法还真挺多。下面总结了一下。...个之前提到的数据。...代码: 1 /** 2 * 3 * @param n 需要移动的盘子数 4 * @param a a柱 这里的abc柱,并不是实际问题中的ABC三个柱子,是动态分析过程中的柱子...2)算法规律:    根据上面的二叉树的图,可以看到如下规率:     A.盘子数(N)=二叉树的高度(H)     B.第n层序号能被2的(n-1)次方整除,但不能被2的n次方整除(n从下至上增加)...    C.每一层的节点数=2的(N-n)次方     D.无论有多少个盘子,每一层的步骤都是相同的,例如:所有的最上面一层都是A->C,第二层也是一样的。

    78910

    Hanoi(汉诺塔)

    说明: 汉诺塔(河内塔)(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard...Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小 至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根石棒...,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当 盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日来临之时。...如果盘数超过2个,将第三个以下的盘子遮起来,就很简单了,每次处理两个盘子,也就是:A->B、A ->C、B->C这三个步骤,而被遮住的部份,其实就是进入程式的递归处理。 ?

    1.1K20

    汉诺塔解法

    汉诺塔解法个人总结: 按顺序标号(①、②、③、④、⑤) 规则: 1、一次只能移动一个 2、大不压小 规律: 1、奇数步一定是移动最小的那个① 2、偶数步移动剩下可以移动的那个盘 3、①移动方向要固定...,一直往左或一直往右,例如A->B,B->C,C->A,A->B,B->C…(方向决定最后的移动位置) 4、方向:①一直往右的话,若是奇数个盘则最终所有盘从A->B,若偶数个盘则最终所有盘从A->C,...若要改变位置,则改变①的移动方向 最少步数: 2个圆盘的时候是3次 = 2的2次方减1 3个圆盘的时候是7次 = 2的3次方减1 4个圆盘的时候是15次 = 2的4次方减1 5个圆盘的时候是31次...= 2的5次方减1 所以,n个圆盘的时候是:2的n次方减1

    76310

    汉诺塔问题

    汉诺塔问题 学递归,跳不过汉诺塔这个程序。以前弄NOIP,老师很详细地讲过汉诺塔的原理以及实现算法,不过我上大学了却发现老师讲到汉诺塔,只是像一笔带过,原理都没讲通,更别说算法了。...我相信像他那么讲,没一个同学(没基础的)能弄得懂,就算你给一个flash汉诺塔的游戏,也不见得会玩。 汉诺塔真的挺有意思的,我写这篇文章,也算是回忆回忆以前学过的知识。如果有什么错误,还请原谅。...没有听说过汉诺塔的人,可以去baidu查查,或则你去http://www.4399.com/flash/293.htm 玩一玩,大概就知道是干什么的了。...这些东西也许只有等我们做了更多题,接触了更多有关树和图的问题以后才能理解吧。 最后给大家和我自己留一个问题:汉诺塔是三根柱子,如果我们有四根柱子,我们又怎样移动盘子,或者说怎样移动使步数最少?...有时间我会想想这个问题,以后写一个“汉诺塔拓展”。 我把程序传到附件里了,大家可以下载运行了试试。

    1.4K21
    领券