LintCode动态规划题总结
来源:互联网 发布:淘宝模特招聘是真的吗 编辑:程序博客网 时间:2024/06/04 23:22
不知道什么是动态规划的,传送门在这儿:[干货]动态规划十问十答
动态规划进阶:动态规划:从新手到专家
相信看完上面两个链接的博客后,应该对于动态规划有一个新的认识和了解了。接下来就来看看LintCode上DP(下文我将以DP或者Dynamic Programming表示动态规划)的题目。
我们先通过一道题目来认识一下DP:
109. Triangle
有一个数字三角形,从上往下走,找到一条最短的从根到叶节点的路径,即各个节点上的数字加起来的和最小。比如:
[ [2], [3,4], [6,5,7], [4,1,8,3]]
那么最小的路径和就是2 + 3 + 5 + 1 = 11。这道题有点类似于求二叉树的最小路径和,但是和二叉树有区别,因为二叉树每个节点只有2个子节点。递归的时候,子递归不会进入兄弟节点的后代。
如果这道题直接套用二叉树的那种递归思想,那我们会写出如下的DFS的代码:
但是这个代码超时了,时间复杂度是O(2^n)。
接下来再用divide & conquer分治法来看这道题:
然并卵,这个解法和DFS的时间复杂度一样,一样会TLE超时
以上方法超时的原因,就在于有些点被访问了不止一次,而是多次,所以我们要加入Hash表,来进行记忆化搜索。代码如下:
这样的代码就是可以AC的。一共有O(n*n)个节点,每个节点只被访问一次,所以总的时间复杂度是O(n*n)。这就是加了记忆化搜索的分治法。
而DP和分治法的区别就在于DP有脑子,去掉了重复的运算。动态规划快,就在于它去掉了重复运算。
0 0
- LintCode动态规划题总结
- LintCode 关于动态规划问题的总结
- LintCode:动态规划 爬楼梯
- Lintcode-动态规划-数字三角形
- Lintcode-动态规划-爬楼梯
- Lintcode-动态规划-不同路径
- LintCode 第111题 爬楼梯 【动态规划算法】
- 动态规划刷题总结
- LintCode(M)打劫房屋(动态规划)
- Lintcode-动态规划-最小路径和
- Lintcode-动态规划-不同路径二
- lintcode 168. 吹气球 动态规划
- lintcode 20. 骰子求和 动态规划
- 关于一类动态规划题的总结
- 动态规划几个典型题总结
- 动态规划总结
- 动态规划总结
- 【转】动态规划总结
- RaspberryPi 3安装ubuntu server
- java.lang.IllegalStateException: Failed to load ApplicationContext错误解决
- 【学习笔记】面向对象的程序设计
- 现在的SQLSERVER数据库监控软件有哪些?
- Volley的基础使用
- LintCode动态规划题总结
- HTML简介和基本语法
- 6. ZigZag Conversion
- poj 3671(暴力 枚举)
- python核心编程学习笔记-2016-08-13-06-元类
- Android Studio 编译不通过,报错“找不到org.apache.http。。。”
- AndroidListView显示item位置效果错误的问题
- URAL2014C之妙用线段树
- 【学习笔记】类的继承