动态规划的思路:

    1. 递归+记忆化 -> 递推:

    通过先写出递归,然后加上记忆化(缓存)方式来做,然后再进一步思考它的递推方法

    1. 动态规划的关键点是:
      1. 状态的定义:定义成一个数组 opt[n],dp[n],fib[n]
      2. 通过状态来定义状态转移方程:opt[n] = best_of(opt[n-1], opt[n-2],….),即 dp 方程
      3. 最优子结构:也就是说第 n-1 个状态有一个最优的子结构能推导出第 n 个状态