动态规划基本思想是,将原问题分解为相似的子问题,在求解的过程中通过子问题的解求出原问题的解。因此一般有递推公式将一个问题分解成几个子问题。任何递推公式都可以直接翻译成递归算法,但是基本实现时编译器往往不能正确对待递归算法,结果产生低效程序,当怀疑是这种情况时,必须给编译器一些帮助,将递归算法写成非递归。也就是把子问题的答案系统的记录在一个表内,这种技巧就是动态规划。
写动态规划规划程序的关键是如何设计这个表:
1.表的行和列各代表什么意思。
2.表从哪里开始填起,如何填。
3.最优解在哪个位置。
4.有时候表可能是三维的,这时候可以用多张二维表代替。三维表在递推公式下标上一般有三个字母,二维表有两个。
5.设计表的依据就是递推公式。