• 九。动态规划


    四.动态规划

    代码随想录内容:

    1.动态规划当前状态是由前面状态推导而来的,而贪心是局部直接选最优的

      存在递推关系(存在状态转移),也就是当前状态是由前面状态推导而来的。可以使用动态规划

    2.动态规划的解题步骤:(dp数组,状态转移公式,初始化,遍历顺序,举例子)(动规五部曲,类似前面的递归三部曲,回溯三部曲)

    (1)确定dp数组(dp table)以及下标的含义(dp[i] 和 i 的含义)

    (2)确定递推公式状态转移公式

    (3)dp数组如何初始化

    (4)确定遍历顺序

    (5)举例推导dp数组

    3.动态规划如何debug

    把dp数组打印出来。写代码之前把状态转移在dp数组上模拟一遍,做到心中有数,debug的时候也容易找问题

     Labuladong内容:

    1.动态规划的一般形式就是求最值。例如:最长递增子序列,最小编辑距离

    2.动态规划三要素:重叠子问题,最优子结构,状态转移公式

    3.在斐波那契数列问题里面,状态转移公式就代表着暴力解法(暴力递归)。优化方法就是用备忘录或者DP table,再无奥妙可言 

    小点:

    1.dp分析时从后往前分析,写程序时从前往后迭代

    2.存在重叠子问题的题目可以用动规

      存在状态转移的问题可以用动规

    3.定义了dp[i],那么dp[i]一般和dp[i-1]有关

    4.dp数组也叫状态数组,保存每个状态

    5.背包问题都是这种累加的形式

    6.01背包:每个物品只能使用一次,完全背包:每个物品可以重复使用

    7.记忆化搜索就是带备忘录的递归(带备忘录的dfs)

    8.贪心中的局部(子问题)就类似于动规中的状态

      N647.最长连续递增子序列 可以用贪心做,后面做贪心的时候可以回来看看

    9.Arrays.fill()方法初始化的时候比较有用

    10.动态规划中状态的定义是个难点

  • 相关阅读:
    法师 南邮NOJ网络赛2083
    法师 南邮NOJ网络赛2083
    法师 南邮NOJ网络赛2083
    水NOJ Duplicate Removal
    水NOJ Duplicate Removal
    水NOJ Duplicate Removal
    水NOJ Duplicate Removal
    【POJ】3630 Phone List
    【POJ】2503 Babelfish
    【POJ】1451 T9
  • 原文地址:https://www.cnblogs.com/midiyu/p/15416755.html
Copyright © 2020-2023  润新知