一、找准三个基本要素 重叠子问题:求每一个状态都会要求的解,比如斐波那契数列的第n项 最优子结构:获取状态n时,其他状态的最优情况,没有其他条件约束 状态转移方程:求第n个状态值的方法,比如斐波那契的f(n)=f(n-1)+f(n-2) 二、思路过程 确定base case,因为求状态n需要用前面的状态去推倒 确定状态,也就是dp[]数组中,下标的意义 确定dp数组中变量的含义 确定状态转移方程 但凡遇到需要递归的问题,最好都画出递归树,这对你分析算法的复杂度,寻找算法低效的原因都有巨大帮助。 能否进行状态压缩,求n状态只用pre和cur而不是用整个数组去存