zoukankan      html  css  js  c++  java
  • 动态规划思路

    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]为什么
  • 相关阅读:
    1113. Integer Set Partition (25)
    1110. Complete Binary Tree (25)
    1109. Group Photo (25)
    Bender Problem
    格子中输出
    牌型种数
    移动距离
    QQ帐户的申请与登陆(25 分)
    词频统计
    基于HTTP的直播点播HLS
  • 原文地址:https://www.cnblogs.com/luckyCoder/p/12732992.html
Copyright © 2011-2022 走看看