动态规划
文章平均质量分 73
TOP-SECRET
这个作者很懒,什么都没留下…
展开
-
C++动态规划算法之子集的和
子集的和题目描述对于从1到N (1 举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,他们每个的所有数字和是相等的:{3} and {1,2} 这是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数)如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7},每一种分发的子集合各数字和是相等的:{1,6,7} 和 {2,3,原创 2017-06-16 13:23:43 · 1980 阅读 · 0 评论 -
51Nod 1453(CF553-A) - 抽彩球(Kyoya and Colored Balls) - 解题报告
51Nod 1453 - 抽彩球一个袋子中有n个彩球,他们用k种不同的颜色染色。颜色被从1到k编号。同一种颜色的球看成是一样的。现在从袋中一个一个的拿出球来,直到拿完所有的球。对于所有颜色为 i (1<=i<=k-1) 的球,他的最后一个球总是在编号比他大的球拿完之前拿完,问这样情况有多少种。很显然,这道题有两种解法——排列组合以及DP,详情点击进入结解题报告。原创 2018-05-16 14:09:58 · 921 阅读 · 0 评论 -
C++动态规划之清帝之惑之顺治
清帝之惑之顺治题目描述顺治帝福临,喜欢滑雪,这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待太监们来载你。顺治想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子:1 2 3 4 516 17 18 19 615 24 25 20 7原创 2017-09-22 18:57:38 · 1352 阅读 · 0 评论 -
C++动态规划算法之数字三角形系列问题:数塔及其变种
数字三角形系列问题数字三角形I题目描述考虑在下面被显示的数字金字塔。 写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大和:30输入第1行:1个整数R(1接下来共R行,第i行有i个整数。所有的数均非负的且不大于原创 2017-09-07 13:23:09 · 5288 阅读 · 0 评论 -
C++动态规划算法之数字金字塔【USACO TRAINING】:一道经典的数塔问题
数字金字塔题目描述考虑在下面被显示的数字金字塔。 写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大。每一步可以走到左下方的点也可以到达右下方的点。在上面的样例中, 从7到3到8到7到5的路径产生了最大和:30输入第1行:1个整数R(1接下来共R行,第i行有i个整数。所有的数均非负的且不大于100。原创 2017-08-21 16:19:23 · 7039 阅读 · 2 评论 -
C++动态规划算法之0-1背包问题
0-1背包问题题目描述有 n 件物品, 每件物品有一个价值和一个重量,分别记为: b1,b2, …bn w1,w2, …wn 其中所有的 重量wi 均为整数。 现有一个背包,其最大载重量为W,要求从这n件物品中任取若干件(这些物品要么被装入要么被留下)。问背包中装入哪些物品可使得所装物品的价值和最大?输入第1行:2个整数n原创 2017-08-24 13:47:39 · 2639 阅读 · 0 评论 -
C++动态规划算法之采药
采药Description辰辰是个很有潜能、天资聪颖的孩子,他的梦想是称为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到原创 2017-07-10 12:04:22 · 2078 阅读 · 0 评论 -
C++动态规划算法之怪盗基德的滑翔翼
怪盗基德的滑翔翼Description怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。不得已,怪盗基德只能操作受损的滑翔翼逃脱原创 2017-06-13 14:00:30 · 1901 阅读 · 0 评论 -
C++动态规划算法之计算字符串距离
计算字符串距离Description对于两个不同的字符串,我们有一套操作方法来把他们变得相同,具体方法为:修改一个字符(如把“a”替换为“b”)删除一个字符(如把“traveling”变为“travelng”)增加一个字符(如把“son”改成“song”)比如对于“abcdefg”和“abcdef”两个字符串来说,我们认为可以通过增加/减少一个“g”的方式来达到目的。无原创 2017-07-13 09:49:35 · 2901 阅读 · 0 评论 -
最短编辑距离
1.最短编辑距离的介绍①基本定义 所谓编辑距离(Edit Distance),是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作总共有三个:将一个字符替换成另一个字符、插入一个字符或者删除一个字符。讲道理的话,编辑距离越小,两个字符串就越相似。对了,它又叫作Levenshtein距离,因为这个概念是在1965年由俄罗斯科学家Vladimir L原创 2017-07-12 17:59:35 · 2446 阅读 · 3 评论 -
C++动态规划算法之Maximum sum(最大和)
Maximum sum(最大和)DescriptionGiven a set of n integers: A={a1, a2,..., an}, we define a function d(A) as below: t1 t2 d(A) = max{ ∑ai + ∑aj | 1 <= s1 <= t1 <原创 2017-07-11 11:36:58 · 4590 阅读 · 0 评论 -
C++动态规划算法之拦截导弹
拦截导弹Description某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最原创 2017-06-11 22:46:25 · 6588 阅读 · 0 评论 -
C++动态规划算法之最长上升子序列
最长上升子序列Description一个数的序列bi,当b1 b2 bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2, ..., aN),我们可以得到一些上升的子序列(ai1,ai2, ...,aiK),这里1 <=i1 i2 < ... <iK 你的任务,就是对于给定的序列,求出最长上升子序列的长度。Input输入的第一行原创 2017-06-11 22:35:11 · 2048 阅读 · 0 评论 -
C++记忆化搜索算法与动态规划算法之公共子序列
公共子序列Description我们称序列Z = 1, z2, ..., zk >是序列X = 1, x2, ..., xm >的子序列当且仅当存在 严格上升 的序列< i1, i2, ..., ik >,使得对j = 1, 2, ... ,k, 有xij = zj。比如Z = 是X = 的子序列。现在给出两个序列X和Y,你的任务是找到X和Y的最大公共子序列,也就是说要找原创 2017-07-10 16:06:13 · 1874 阅读 · 0 评论 -
浅谈算法之动态规划
转载自——车龙梁Adam前言:动态规划算法 动态规划(Dynamicprogramming)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。 动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题...转载 2018-05-17 14:05:12 · 650 阅读 · 0 评论