动态规划算法的求解步骤:
1.描述最优解结构
概念性的定义,这个阶段弄清什么情况才是最优解,假设有了最优解,需要怎样的子问题最优解,可以用反证法证明
要想得到大问题的最优解,必须保证这些子问题也要有最优解。
2.递归地定义最优解值
用数学公式定义,这个阶段必须弄清两个问题:1.对于一个大问题求解,要有多少个子问题需要求解;2.对于每个子问题,有多少个选择。
定义好基础条件,写好数学公式。
3.自底向上的方式求解最优解
代码方式实现,要用数组把每个子问题的解存起来,以便求得大问题的解。
4.通过计算信息构造最优解
动态规划算法的两个要素:
1.子问题必须 独立
2.有重叠的子问题(把这些重叠的子问题解保存起来,区别于分治法)