基本理念
说到这个题目,我们要先明白这个DP(Dynamic Programming)的概念是什么:
动态规划(dp)是研究多步决策过程最优化问题的一种数学方法。在动态规划中,为了寻找一个问题的最优解(即最优决策过程),将整个问题划分成若干个相应的阶段,并在每个阶段都根据先前所作出的决策作出当前阶段最优决策,进而得出整个问题的最优解。即记住已知问题的答案,在已知的答案的基础上解决未知的问题。
动态规划有两种实现方法,一种是递推,另一种是记忆化搜索。两种方法时间复杂度完全相同,但是,递推的效率要比记忆化搜索高不少,而且以后的大量优化技巧都建立在递推上(滚动数组、单调队列、斜率优化……)。所以,我们一般用递推来写动态规划。
那我们再来看一张图片:
"那些记不住过去的人注定要重蹈覆辙"------什么意思?这其实是DP的一个设计初衷,就是我们在
写代码时会很容易碰上操作上次所得的结果,遇到这种情况,我们不需要再重新计算一遍,得出结
果,可以记住上一次操作的结果直接计算,这样我们就大大减少了时间的消耗,降低时间复杂度。
<