动态规划思想的思考

对动态规划的思考

如何确定一类的算法问题可以用动态规划的方式,首先就是抓住算法题的最优结果,是否可以从前往后,从上到下,算法的最优结果是否可以由先前的最优化结果推出来,也就是最优的子结构,用dp数组的形式逐渐递推到最终的最优结果。例如01背包问题,数塔问题。

还有一种是问题具有重复的计算,问题的求解种重复的计算浪费了大量的资源。这时候就是属于有重复的子问题,可以用一个数组dp保存已经计算过的结果,以减少时间的复杂度,这也是一种剪枝的技巧。例如递归的求解斐波那契数列。

if (dp[i]==1){

表示已经计算过了,直接就使用dp[i];

}else{

计算它的结果;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 动态规划(Dynamic Programming) 本文包括: 动态规划定义 状态转移方程 动态规划算法步骤 最长...
    廖少少阅读 8,625评论 0 18
  • 0. 动态规划分析 0.1 动态规划、递归和贪心算法的区别 动态规划就是利用分治思想和解决冗余的办法来处理问题,所...
    dreamsfuture阅读 12,132评论 2 6
  • 0x50「动态规划」例题 几点总结1 DP三要素:状态,阶段,决策。具体地讲,若DP时是双重循环,第一重循环通常表...
    云中翻月阅读 6,481评论 2 4
  • 分治方法 将问题划分成互不相交的子问题 递归地求解子问题 将子问题的解组合起来 动态规划(两个要素:最优子结构、子...
    superlj666阅读 3,459评论 0 0
  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 14,672评论 0 89