一、由来: 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个 ...
分类:
其他好文 时间:
2019-10-24 09:24:33
阅读次数:
389
一、对分治思想的体会 1、帮助我们解决问题。 分治法,对大的问题拆封成规模较小的问题,我们求解小问题,再把小问题的答案合并起来,得出大问题的答案。大问题思考起来比较乱,犯迷糊,不易想到解决方法,比如汉诺塔问题。分解成小问题,我们就容易想出方法来解决问题 2、时间复杂度低 分治法思想核心是递归,递归的 ...
分类:
其他好文 时间:
2019-10-14 15:05:32
阅读次数:
125
递归的概念:直接或者间接地调用自身的算法称为递归算法。 递归让一些复杂的问题变得简单易懂易于分析,如汉诺塔问题和Ackerman函数,在排序快排算法和归并排序算法中也有递归的运用。 汉诺塔: ackerman函数: 递归的缺点:需要不断开拓堆栈空间,占用空间大,可能导致内存溢出,并且运行效率低,不能 ...
分类:
编程语言 时间:
2019-10-13 18:29:56
阅读次数:
93
分治法的思想 分治法就是把一个大问题分解为规模较小的相同小问题,这些小问题的解合并起来就是大问题的解,但是小问题的规模要是一样且相同的, 不能分解出来的一个小问题是求最大值,而 另一个小问题是求最小值,这种情况是不适合用分治的 如果要处理一个较大规模的问题,比如说大整数的加减乘除,是可以分解成最末位 ...
分类:
其他好文 时间:
2019-10-11 23:29:19
阅读次数:
118
汉诺塔问题 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个 ...
分类:
其他好文 时间:
2019-10-06 00:31:47
阅读次数:
66
描述 【题解】 之前写过一次详解:https://www.cnblogs.com/AWCXV/p/11395875.html 【代码】 ...
分类:
其他好文 时间:
2019-10-03 16:23:46
阅读次数:
132
https://www.acwing.com/problem/content/98/ 先考虑三个柱子的汉诺塔问题,设d[i]表示在三个柱子都可以选时,把i个塔从一个柱子移动到另一个柱子的最小移动步数。首先把n 1个塔从A移动到B,然后把n从A移动到C,再把n 1个塔从B移动到C。 d[i]=2 d[ ...
1 问题描述 有A,B,C三个柱子,A柱子上从上到下,从小到大排列着n个圆盘。现要求将A柱子上的n个圆盘全部移动到C柱子上,依然按照从上到下,从小到大的顺序排列。且对移动过程要求如下: a)一次只能移动一个盘子。 b)移动过程中大盘子不允许出现在小盘子上方。 问:总共需要移动的步数是多少? 2 化繁 ...
分类:
其他好文 时间:
2019-09-12 18:17:23
阅读次数:
114
链接: https://www.acwing.com/problem/content/description/98/ 题意: 汉诺塔问题,条件如下: 1、这里有A、B、C和D四座塔。 2、这里有n个圆盘,n的数量是恒定的。 3、每个圆盘的尺寸都不相同。 4、所有的圆盘在开始时都堆叠在塔A上,且圆盘尺 ...
题意 规则同汉诺塔,强制规定移动操作的优先级,每次选择合法的优先级最高的操作,两次操作不能移动同一个盘子,保证有解,求移动次数 思路 将普通汉诺塔问题的思路用在这道题上面,容易证明$f$满足线性递推关系:$f[i]=k f[i 1]+b$,暴力$dfs$出前三个$f$,就可以求出$k=\frac{f ...
分类:
其他好文 时间:
2019-08-30 21:06:12
阅读次数:
63