动态规划算法把待求解问题分成若干子问题,然后从这些子问题的可行解一步步递推到最优解。通常用于求解具有某种最优性质的问题。
按照网上大佬总结的,通常有如下5步:
1.确定dp数组以及下标的含义。
2.确定递推公式。
3.dp数组如何初始化。(有时候初始化非常关键)
4.确定遍历顺序。(即for循环的顺序,这个也是蛮讲究的)
5.举例推导dp数组。(也就是程序不对的时候,自己推导看看和代码打印的dp数组有啥不同)
⭐直接看下面题目的简单难度的几道,就能大概的了解DP的思想。
⭐⭐⭐看背包变种题目之前,建议先入门背包问题。关于背包问题的入门可以看这,以方便学习关于背包问题的变种题目(其实从背包问题入门动态规划也是非常推荐的):
【1】