动态规划算法总结
来源:互联网 发布:北大图书馆知乎 编辑:程序博客网 时间:2024/06/06 06:46
动态规划,是求解决策过程最优化的数学方法,是在处理问题过程中,把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解的一种方法,它没有一种确切的解题步骤,它的解决思路是多种多样的。
这套题里边遇到的dp问题主要有斐波那契数列、最长上升子序列问题、还有就是两种背包的问题。
斐波那契数列:f(n)=f(n-1)+f(n-2),这个就是著名的斐波那契数列,然后这类问题是整套题做的最爽的一块,因为主要的步骤在公式,一道题会了,整个就会了,非常简单。
最长上升子序列:就是在一段序列里求出上升是最长一段子序列,解题方式就是用一个数组储存当前选出的最长序列,然后进行比较,如果在有更长的序列,那么替换,否则继续比较,最终输出。这个问题是在前几道是这类的题目,我印象深刻的是一个猴子的。。卡了我好久,一直没搞懂题意,最后搞懂了,也被搞的不想做了。。。
01背包:公式:f[i, j] = max( f[i-1, j-Wi] + Pi (j >= Wi), f[i-1, j] ),给定价值和体积,求在当前情况下可能得到的最大价值。这种类型所有的题目基本都离不开那个公式,很多解题方法最后也都归结到公式。“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”,价值为f[v];如果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c的背包中”,此时能获得的最大价值就是f[v-c]再加上通过放入第i件物品获得的价值w。这就是01背包问题的解题思路。
完全背包:一个复杂的01背包问题,我是这么理解的。。这个类型的题我只做了俩,一个还是转换为了01背包去做。。它跟01背包的差别就是在与取几件的问题,其余的解题差不多。
感想:dp的问题,说难很难,一整天没思路,说简单也非常简单,斐波那契数列的问题一小时多点可以刷3道,这套题看的是思路。有思路简单,没思路很难,跟前两套相比变化很大,很锻炼自己,一个不错的体验。
- 动态规划算法总结
- 【算法总结】动态规划
- 动态规划算法总结
- 动态规划算法总结
- 动态规划算法总结
- 算法:动态规划总结
- 算法_动态规划总结
- 算法动态规划个人总结
- 算法之动态规划总结
- 【算法知识总结】动态规划
- 关于动态规划算法的总结
- 关于动态规划算法的总结
- 【算法总结】Dynamic Programming 动态规划
- 专题三-动态规划算法总结
- 动态规划算法总结及实例简介
- 动态规划算法——知识点总结
- 【算法导论】贪心算法,递归算法,动态规划算法总结
- 贪心算法,递归算法,动态规划算法比较与总结
- JAVA多线程之生产者消费者模型
- 剑指offer-29数组中出现次数超过一半的数字
- 图像的去模糊
- Mars-HTML5(三)常用文本标签
- UGUI 滚动优化之 隐藏视口外的GameObject
- 动态规划算法总结
- 11、python标准库概览
- tar命令基本用法
- linear_regression
- 二叉树的创建与前序遍历(递归方式)
- window 下mysql5.7.12安装报错记录
- java数据结构之(顺序栈+链式栈)
- <LeetCode OJ> 109 / 108 Convert Sorted ( List / Array ) to Binary Search Tree
- NodeJs——(1)封装,调用,执行,访问路径,http,函数编程,等待函数,事件监听