题目描述: 给定A、B、C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形)。现要将这些圆盘移到C柱上,在移动过程中可放在B柱上暂存。要求: (1)每次只能移动一个圆盘; (2)A、B、C三根细柱上的圆 ...
分类:
其他好文 时间:
2018-09-03 13:42:50
阅读次数:
157
关于阶乘这里简单说明一下 递归算法的定义(从程序的角度):任何调用自身函数的过程都可以称为递归算法(前面实现的汉诺塔程序就是一个很好的例子)。这里需要注意的是递归必须满足以下两个条件: ①边界条件:至少有一条初始定义是非递归的,如汉诺塔的H(0)=0,阶乘的0!=1。 ②递归通式:由已知函数值逐步计 ...
分类:
编程语言 时间:
2018-08-22 17:00:04
阅读次数:
132
目前看过的书籍中分析递归最好的是日本人吉城浩写的《程序员的数学》 总结: 汉诺塔 汉诺塔的问题 现在我们先不需要知道递归是什么,也没必要,我们先来看一个非常经典的游戏—汉诺塔,该游戏是数学家爱德华卢卡斯于1883年发明的,游戏的规则如下,有三根细柱(A、B、C),A柱上套着6个圆盘,圆盘的大小都不一 ...
分类:
编程语言 时间:
2018-08-22 16:58:39
阅读次数:
167
规则 1. 每次移动一个盘子 2. 任何时候大盘子在下面,小盘子在上面 方法 假设共n个盘子 当n=1时: 1. 直接把A上的一个盘子移动到C上(==A C==) 当n=2时: 1. 把小盘子从A放到B上(==A B==)<! 这里开始采用参数,rsc源地址=A,dst目的地址=B 2. 把大盘子从 ...
分类:
编程语言 时间:
2018-08-21 23:06:13
阅读次数:
276
规则: 1. 每次移动一个盘子 2. 任何时候大盘子在下面,小盘子在上面 方法: n=1: 直接把A上的一个盘子移动到C上, A C n=2: 1. 把小盘子从A放到B上, A B 2. 把大盘子从A放到C上, A C 3. 把小盘子从B放到C上, B C n=3: 1. 把A上的两个盘子,通过C移 ...
分类:
其他好文 时间:
2018-08-20 23:27:03
阅读次数:
210
规则: 1. 每次移动一个盘子 2. 任何时候大盘子在下面,小盘子在上面 方法: n=1: 直接把A上的一个盘子移动到C上, A C n=2: 1. 把小盘子从A放到B上, A B 2. 把大盘子从A放到C上, A C 3. 把小盘子从B放到C上, B C n=3: 1. 把A上的两个盘子,通过C移 ...
分类:
其他好文 时间:
2018-08-20 22:49:07
阅读次数:
129
链接:http://poj.org/problem?id=1958 大意:汉诺塔升级版,四根柱子,n个盘子,求最少移动次数; 两种方法 递推or递归(当然还有思路3——打表) 思路1:递推(或者DP?) 把四塔转换为三塔进行思考 假设当前要移动n个盘子,那么就不如分为以下几步 先将上面的i个盘子移到 ...
分类:
其他好文 时间:
2018-08-20 21:49:44
阅读次数:
148
HDU 2089 不要62 数据量比较小,还是直接暴力吧。 HDU 1207 汉诺塔II 汉诺塔的变型,增加了一根柱子,直接上队里大神写的代码。 HDU 2680 Choose the best route 多个起点,一个终点,反向存图,跑一遍Dijkstra,比较得出最短路即可。 UVa Anan ...
分类:
其他好文 时间:
2018-08-20 19:00:14
阅读次数:
164
"题目链接" 两个CPU,处理N个任务,每个任务有一个处理时长(0~4096),要把这些任务全部处理完,如何调度才能最高效? N个圆柱,要搭建两个塔,要使这两个塔高度之差尽量小,问较高的那座塔多高? 需要注意一个特殊情况:例如3 3 2 4 最合理的调度为:第一台CPU处理3、3;第二台CPU处理2 ...
分类:
其他好文 时间:
2018-08-19 19:03:33
阅读次数:
163
Time limit1000 ms Memory limit32768 kB 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目,你能AC吗? Inp ...
分类:
其他好文 时间:
2018-08-19 01:04:13
阅读次数:
124