在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目,你能AC吗? Input 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一 ...
分类:
其他好文 时间:
2019-02-09 10:30:02
阅读次数:
201
还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到小盘的上面。xhd在想如果我们允许最大的盘子放到最上面会怎么样呢?(只允许最大的放在最上面)当然最后需要的结果是盘子从小到大排在最右边。 Input 输入数据的第 ...
分类:
其他好文 时间:
2019-02-08 10:23:41
阅读次数:
200
第八课主要介绍递归和动态规划 第八课主要介绍递归和动态规划 介绍递归和动态规划 暴力递归: 1,把问题转化为规模缩小了的同类问题的子问题 2,有明确的不需要继续进行递归的条件(base case) 3,有当得到了子问题的结果之后的决策过程 4,不记录每一个子问题的解 动态规划 1,从暴力递归中来 2 ...
分类:
编程语言 时间:
2019-02-07 09:32:34
阅读次数:
274
题目:汉诺塔 I (1) 描述 传说,在世界中心贝拿勒斯(在印度北部)的圣庙外有左中右三根足够长的柱子(塔),左边柱子上套着 64 片金片,金片按“上小下大”排,其余两根是空柱子。僧人们借助中间的柱子将左边柱子上的金片移动到右边…… (2) 要求 一次只能移动一片 金片之间,必须是上小下大,即大金片 ...
分类:
编程语言 时间:
2019-02-07 00:02:25
阅读次数:
205
Description 汉诺塔由三根柱子(分别用A B C表示)和n个大小互不相同的空心盘子组成。一开始n个盘子都摞在柱子A上,大的在下面,小的在上面,形成了一个塔状的锥形体。 对汉诺塔的一次合法的操作是指:从一根柱子的最上层拿一个盘子放到另一根柱子的最上层,同时要保证被移动的盘子一定放在比它更大的 ...
分类:
其他好文 时间:
2019-02-06 18:25:43
阅读次数:
150
"4147:汉诺塔问题(Hanoi)" 总时间限制: 1000ms 内存限制: 65535kB 描述 一、汉诺塔问题 有三根杆子A,B,C。A杆上有N个(N 1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时 ...
分类:
其他好文 时间:
2019-02-05 22:21:00
阅读次数:
221
首先我们来求第m次移动的盘子号数,先列出当m比较小可以直接观察的前几项 m : 1、2、3、4、5、6、7、8、9、10 id : 1、2、1、3、1、2、1、4、1、2 很容易联想到树状数组的lowbit,这题的id就是lowbit(m)在二进制中的编号。 for (id = 1; (m & 1) ...
分类:
其他好文 时间:
2019-02-03 12:51:48
阅读次数:
170
对于一些算法问题,求次数,种类数(答案就是一个具体的数值)这些,如果有封闭形式就可以直接解,就不用去编码大量的代码了。那我们看一个例子吧。 汉诺塔移动次数: 我们以前是求汉诺塔的移动方式,那现在要求移动多少次,那该怎么做呢?我们可以先看汉诺塔的移动次数递归式 f(n) = 2f(n-1)+1 。那是 ...
分类:
其他好文 时间:
2019-02-01 13:08:25
阅读次数:
213
需求: 求出每一级的数量,但是父级+子级的所有数量。 比如 第一级本身数量为1 而子级是2 ,那么相加就是3,但是2级还有3级,就需要再加上3级。依次类推到最后一级数量之和就是这个分类的总数量。 实现的思路: 1:我们需要找到自身的数量. 2.1:我们找到自身的下一级所有数量相加 ,返回数量. 2. ...
分类:
其他好文 时间:
2019-01-30 18:25:29
阅读次数:
122