动态规划
文章平均质量分 77
zhumawinnner
这个作者很懒,什么都没留下…
展开
-
0-1背包的二维实现及一维实现
参考资料:《算法设计与分析基础》P228-P230 http://blog.csdn.net/tjyyyangyi/article/details/7929665 http://www.cnblogs.com/SDJL/archive/2008/08/22/1274312.html第i个物品放了(且能放下),就是 vi + f(原创 2015-01-26 15:08:01 · 733 阅读 · 0 评论 -
石子合并问题(动归)
【石子合并】 在一个圆形操场的四周摆放着n 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。 【输入文件】 包含两行,第1 行是正整数n(1 第2行有n个数,分别表示每堆石子的个数。 【输出文件】 输出两行。 第1转载 2015-01-31 21:43:12 · 1103 阅读 · 0 评论 -
背包问题的应用
Description:话说月光家里有许多玩具,最近他又看上了DK新买的“擎天柱”,就想用自己的跟DK的换。每种玩具都有特定的价格,价格为整数。只有月光拿出的玩具的总价格与“擎天柱”的价格相等才能换得“擎天柱”。同时,月光还希望能用最少的玩具数换回“擎天柱”。请问,月光能顺利得到梦寐以求的“擎天柱”吗?Input:输入数据包含多组;对于每组数据,第一行为一个正整数n(1 ≤n≤10原创 2015-02-05 16:27:32 · 1388 阅读 · 0 评论 -
Floyd算法(所有点对最短路径)
Floyd算法(所有点对最短路径)就是每对可以联通的顶点之间总存在一个借助于其他顶点作为媒介而达到路径最短的最短路径值(这个值通过不断增添的媒介顶点而得到更新,也可能不更新——通过媒介的路径并不比其原路径更短),所有的值存储于邻接矩阵中。典型的动归思想。值得注意的是,Floyd算法本次的状态的获取只用到了上个阶段的状态,而没有用到其他阶段的状态,这就为压缩空间奠定了条件。Floyd原创 2015-03-25 22:05:07 · 2222 阅读 · 0 评论 -
最大子数组和(DP和递归解法)与最大子矩阵和
1. 最大子数组和参考资料:http://blog.csdn.net/liufeng_king/article/details/8632430 http://blog.csdn.net/beiyeqingteng/article/details/7056687题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子原创 2015-03-19 15:43:36 · 988 阅读 · 0 评论 -
Algorithm tutorials(动归) && minipaint
个人认为最好的一篇文章点击打开链接:http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=dynProg国内有人翻译成了中文,翻译质量很高点击打开链接:http://www.hawstein.com/posts/dp-novice-to-advanced.html注:好像中高级的例子解析是错误的,未求证。关于这篇文原创 2015-01-27 21:05:07 · 708 阅读 · 0 评论 -
字符串编辑距离与拼写错误检查
编辑距离是指两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。编辑操作包括删除、添加(插入)和替换三种方式。当然,次数越小越相似。编辑距离应用最多的地方就是基于贝叶斯定理的拼写检查中,贝叶斯公式:用户输入一个单词时,可能拼写正确,也可能拼写错误。如果把拼写正确的情况记做c(代表correct),拼写错误的情况记做w(代表wrong),那么"拼写检查"要做的事情就是:原创 2015-01-25 19:50:25 · 1452 阅读 · 0 评论 -
动态规划原理解析
一、贪心算法通过一系列步骤构造问题的解,每一步对目前构造的部分解作一个扩展(往前推进,直至子问题的规模为零),直到获得问题的完整解为止。这个技术的核心是,所做的每一步选择都必须满足可行、局部最优、不可取消原则。代表性算法有Dijkstra算法(当前最短路径),Prime算法(向前面构造的子树添加离树中顶点最近的顶点(邻接顶点))和Kruskal算法(贪婪的把最小权的边(顶点)纳入集合,保证不产原创 2015-01-13 21:19:32 · 756 阅读 · 0 评论 -
卡特兰数——动态规划思想
问题描述:卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。输入一个整数n,计算h(n)。其递归式如下:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2,h(0) = h(1) = 1) 该递推关系的解为:h(n)=C(2n,n)/(n+1) (n=1,2,3,...) 思路:直接根据递归转载 2015-01-27 11:24:12 · 1551 阅读 · 0 评论 -
有向无环图的动态规划实现
Dijkstra算法的本质是贪心技术,适用于所有的有环与无环图。有向无环图,简称DAG。如果一个图是无环的,可以考虑用动态规划。具体参见:http://www.cnblogs.com/lpshou/archive/2012/04/17/2453370.html 点击打开链接代码实现:#include#include#define x 9999#define max 9999转载 2015-01-27 16:39:43 · 735 阅读 · 0 评论 -
最优二叉查找树
1.算法讲解见《算法设计与分析基础》P223-P227;2.关于如何确定循环的值,见下图:可得到下表:很显然,d作为最外层循环,i为次外层,而j作为i的因变量存在。i=1~(n-d),相应的j= i+d 。k作为最内存循环,每次开始循环时,始终用temp存储此次循环的最小值,即3.代码如下:#include#include#define max原创 2015-01-07 23:36:55 · 654 阅读 · 0 评论 -
基于接缝裁剪的图像压缩
题目出自《算法导论》P234,T15-8给定一副彩色图像,它由一个mxn的像素数组A[1..m,1..n]构成,每个像素是一个红绿蓝(RGB)亮度的三元组。假定我们希望轻度压缩这幅图像。具体地,我们希望从每一行中删除一个像素,使得图像变窄一个像素。但为了避免影响视觉效果,我们要求相邻两行中删除的像素必须位于同一列或相邻列。也就是说,删除的像素构成从顶端行到底端行的一条“接缝”(seam),相邻原创 2015-03-10 14:53:40 · 1461 阅读 · 1 评论