动态规划

45 阅读2分钟

综述

动态规划每一个状态一定是由上一个状态推导出来,求最优解;贪心没有状态推导,从局部直接选最优

  1. 确定dp数组(dp table)以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

相关题目

题目思路
509. 斐波那契数dp
70. 爬楼梯dp
118. 杨辉三角模拟
198. 打家劫舍dp
213. 打家劫舍 II与198一样,需要判断第一间房偷不偷
279. 完全平方数完全背包,注意初始赋值
322. 零钱兑换思路和279一致
139. 单词拆分dp
300. 最长递增子序列dp,理解dp[i]的含义
最长递增子串1. 模拟
2. dp
354. 俄罗斯套娃信封问题转化为一维的最长递增子序列
152. 乘积最大子数组不断更新当前元素前的最大值和最小值
416. 分割等和子集转化为01背包问题
494. 目标和dp
k数之和三维dp,定义好dp的意义
62. 不同路径二维dp
63. 不同路径 II二维dp
64. 最小路径和二维dp
647. 回文子串二维dp,注意三道题的区别
5. 最长回文子串二维dp,注意三道题的区别
516. 最长回文子序列二维dp,注意三道题的区别
1143. 最长公共子序列如果字符相等;如果字符不相等
最长公共子串dp
72. 编辑距离注意增删改三种情况
53. 最大子数组和注意连续子数组
121. 买卖股票的最佳时机1. 贪心
2.dp(注意只能买卖一次)
122. 买卖股票的最佳时机 IIdp(可以多次买卖)
221. 最大正方形结合画图可得状态转移方程
120. 三角形最小路径和自底向上dp