DP水题解题思想+算法代码
来源:互联网 发布:centos minimal 安装 编辑:程序博客网 时间:2024/06/05 09:51
估计大家可以对DP有一定的了解了,首先我要在这里明确DP绝对不是算法,我们可以姑且给它看成是搜索的优化,我们需要知道的是,木有重叠子问题,就不是D家小P(不是DP),子问题不独立一般也不是D家小P.木有边界,那是死循环.
额..好吧,有人问我虾米是重叠子问题,重叠子问题不是和子问题独立相矛盾了么?
不然,重叠子问题是指 我在节点4时的状态和节点1时的状态所要解决的问题是一样的,就是下面哪个货是最大的.so这类的就叫重叠字问题
而所谓的子问题的独立性是指,在4节点时选择7还是8 和在5节点选择8还是9 这两个子问题是相互独立互不干扰.
最优子结构 是指子问题最优那么母问题通过优化保证最优.
if(问题[含有重叠子问题] && 问题[子问题独立] && 问题[有边界] && 问题[最优子问题]){
}
DP--重叠子问题(这一类题是DP中比较基础,但是却是很靠近DP)
就重叠子问题而言,我们需要将重复的步骤"砍掉",其解决方法:我们可以用标记数组标记一下已解决的问题
注:某些时刻我们不知道一道题是否属于DP类型,或者这道题是一道模拟题或者找规律题,我们都可以用打表的方式按题意要求将题目答案解除(时间复杂度很高)将其规律找到后再去求解,以HDU1579为例,这就是一道典型的重叠子问题类型的DP题
DP--重叠子问题(这一类题是DP中比较基础,但是却是很靠近DP)
就重叠子问题而言,我们需要将重复的步骤"砍掉",其解决方法:我们可以用标记数组标记一下已解决的问题
注:某些时刻我们不知道一道题是否属于DP类型,或者这道题是一道模拟题或者找规律题,我们都可以用打表的方式按题意要求将题目答案解除(时间复杂度很高)将其规律找到后再去求解,以HDU1579为例,这就是一道典型的重叠子问题类型的DP题
数塔: HUOJ2084 POJ3176 http://acm.hdu.edu.cn/showproblem.php?pid=2084
一个数字三角形, 形式如下:
1
2 3
4 5 6
7 8 9 10
找出从第一层到最后一层的一条路,使得所经过的权值之和最小或者最大.
这是一道灰常经典也灰常入门的DP问题
这里我们来计算它的最大值
从底层往上走:
第1步
第2步
如此反复一直到顶端.
f(i,j)的状态(到达i最大值)只与它下层 f(i+1,j) f(i+1,j+1)的状态(到达i+1最大值)有关
所谓的状态转移,就是根据f(i+1,j) f(i+1,j+1)的状态转移到f(i,j)的状态
dp是以空间换时间的算法,保存了大量的中间结果..
动态转移方程 :f(i, j)=a[i, j] + max( f(i-1, j),f(i-1, j - 1) ) ; //自底向上的方式计算最优解
- DP水题解题思想+算法代码
- 排序算法思想及代码
- dp算法思想及运用实践例题
- 算法思想之牛逼的DP
- 几种排序算法思想及代码
- 排序--归并算法思想及其代码实现
- 贪心算法基本思想和代码框架
- 求组合数算法思想及代码
- 【bzoj1616】【Usaco2008 Mar】Cow Travelling (dp)题解&代码
- 【bzoj1617】【Usaco2008 Mar】River Crossing (dp)题解&代码
- 有趣的数 算法的题解(数位DP问题)
- 滚动数组算法 --- DP思想(动态规划)
- BZOJ2683 简单题 题解&代码
- 状态压缩DP基础题解题报告
- 【DP】BZOJ4300[绝世好题]题解
- BZOJ4300[绝世好题]题解--DP
- 一道状态压缩DP思想题
- 【算法之动态规划(五)】DP规划思想学习:从《算法导论》到《算法设计》
- char a[]为什么不能声明为extern char *a
- linux下ftp自动上传下载脚本
- 我是如何通过App赚钱的
- javascript数组的使用
- 图解USB 枚举
- DP水题解题思想+算法代码
- FLEX 多轴图表
- Android 广播大全 Intent Action 事
- DP水题一览表
- C#中Hashtable、Dictionary详解以及写入和读取对比
- 乘法逆元与扩展欧几里得
- ACMer基础知识结构
- ANDROID中的VOLD分析
- 黑马程序员_java基础day11