什么是动态规划(dynamic programming),其实它与分治法相同,都是通过组合子问题的解来解决整个问题。分治法是把问题划分成一些独立的子问题,递归的求解各个子问题,然后合并子问题的解而得到原问题的解。不同的是,动态规划适用于子问题不是独立的情况,而是各子问题包含公共的子子问题。这种情况下,若用分治法则会重复的求解公共的子子问题。动态规划算法只对每个子子问题求解一次,将其结果保存在一张表中,从而避免每次遇到各个子问题时重新计算。
更多内容请参考:http://www.hongyanliren.com