问题 E: 汉诺塔(三) 题目描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一 ...
分类:
其他好文 时间:
2016-08-20 17:45:18
阅读次数:
213
【题目描述】 在A、B、C三根柱子上,有n个不同大小的圆盘(设半径分别为1~n),一开始他们都叠在A上,你的目标是在最少的合法移动步数内将所有盘子从A塔移动到C塔。 游戏中的每一步规则如下: (1)每一步只允许移动一个盘子(从一根柱子最上方到另一个柱子的最上方); (2)移动的过程中,你必须保证大的 ...
分类:
其他好文 时间:
2016-08-19 08:37:15
阅读次数:
188
【题目描述】 汉诺塔由三根柱子(分别用A、B、C表示)和n个大小互不相同的空心盘子组成。一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体。 对汉诺塔的一次合法的操作是指:从一根柱子的最上层拿一个盘子放到另一根柱子的最上层,同时要保证被移动的盘子一定放在比它更大的盘子上面( ...
分类:
其他好文 时间:
2016-08-19 07:28:46
阅读次数:
290
解题思路: 将问题最小化用3个盘做实际演示 ...
分类:
编程语言 时间:
2016-08-06 23:17:11
阅读次数:
275
对于知根知底的东西可以用递归,不到万不得已,不推荐使用递归。如文件夹的层数,可以使用递归 递归的效率很低的。递归是在操作栈(不断的出栈和进栈),这个比较耗资源。(汉诺塔问题就是使用递归,函数自己调用自己) >迭代:循环结构,递归:选择结构 >>斐波那契数列,打印前40位的数字 //迭代的实现 pub ...
分类:
其他好文 时间:
2016-08-05 19:32:52
阅读次数:
218
汉诺塔, 得到从初始状态到任意给出状态需要的次数的O(n)算法, 记结论吧??
比如要得到 BCCBABC
则对于原始的AAAAAAA
第一次令 res = ‘A', 然后对于给出的state从大的往小的开始扫, 当前是C所以第7个A变成C, ans += 2^(7 - 1), 然后res = 'B', 也就是剩余的移到B上,
然后第二个需要到B上,且已经在B上, 所以不用管, 继续访问下一位
然后是A, 这个时候把当期大小的盘在B上, 所以移到A上, ans += 2^(5 - 1), 然后res = ’...
分类:
其他好文 时间:
2016-07-31 01:52:02
阅读次数:
256
学习《算法设计与分析基础》,习题2.4 第5题要求为汉诺塔游戏设计一个非递归的算法。 思,不得其解。看书后答案提示: 好吧,话都说得这么直接了,遂百度之,得到一个感觉很好的答案,略做修改,摘录于下: 原文地址:http://blog.sina.com.cn/s/blog_48e3f9cd010004 ...
分类:
编程语言 时间:
2016-07-30 13:36:19
阅读次数:
184
还挺难的,我还是看书知道的 汉诺塔主要是程序需要好好思考,想想还是挺简单的 试题描述 经典的汉诺塔游戏相信很多同学都会玩的,规则就不用赘述,百科一下就OK。有三个柱子A,B,C,A柱子上套有n个大小不等的盘子,任意两个盘子,上面的盘子一定小于下面的盘子。现在请你编写程序计算如何将这n个盘子按照规则移 ...
分类:
其他好文 时间:
2016-07-20 09:04:44
阅读次数:
132
问题链接:HDU1996 汉诺塔VI。水题,用C语言编写程序。
本题实际上是计算3^n。编程中需要注意输出格式。
AC的C语言程序如下:
/* HDU1996 汉诺塔VI */
#include
#include
int main (void)
{
int t, n;
scanf("%d",&t);
while(t--)
{
scanf(...
分类:
其他好文 时间:
2016-07-16 07:02:58
阅读次数:
143