动态规划思路

Dynamitic Plan

  • 动态规划:

    • 试图仅仅解决每个子问题一次,从而减少计算量;一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下一次需要使用时直接查表,避免重复计算
  • 使用要求:

    • 计算时有大量重叠子问题时,求最优解
    • 最优子结构:大问题的最优解可以由小问题的最优解推出
    • 无后效性:一旦f(n)确定,那么之后直接调用它的值就可以,不要再去关心 f(n)的计算过程

流程

  • 一般流程
    • 一般流程就是三步:暴力的递归解法 -> 带备忘录的递归解法 -> 迭代的动态规划解法。
  • 思考流程
    • '找到状态和选择' -> '明确' dp 数组/函数的定义 -> 寻找状态之间的关系。

解析

  1. 状态定义 :dp[i]的值代表什么
  2. 转移方程 :根据情况题目要求定义,形如dp[i+1]=dp[i]+dp[i-1]
  3. 初始状态 :根据情况题目要求定义,形如dp[0]=?,dp[1]=?.....
  4. 返回值 :dp[n]为什么
posted @ 2020-04-19 19:16  雪梨加冰  阅读(165)  评论(0编辑  收藏  举报