目錄
一、基本思想
將待求解的問題分解成若干個子問題,先求解子問題,然後從這些子問題的解得到原問題的解。
二、與分治法的異同
同:基本思想一致(如上)
異:適用動規求解的問題,經分解得到的子問題往往不是相互獨立的。而適用分治法的往往相互獨立。
三、動態規劃算法的基本要素
1、最優子結構性質:問題的最優解包含了其子問題的最優解。
2、重疊子問題性質:若自頂向下求解問題時則每次產生的子問題不總是新問題,有些子問題被反覆計算多次。
四、算法步驟
1、找出最優解的性質,並刻畫其結構特徵
2、遞歸地定義最優值
3、以自底向上的方式計算最優值
4、根據計算最優值時得到的信息構造最優解
五、經典例題
(1)最大字段和
以及其拓展:最大子矩陣和 、最大m子段和
(2)最長公共子序列
(3)矩陣連乘
(4)揹包問題
(5)硬幣問題
六、碰到的例題
(1)Count number of binary strings without consecutive 1’s
(2)護林員蓋房子
(3)逆LCS