動態規劃( dp ),是一種重要的演算法設計思想,是演算法設計的一柄利器。但是,要掌握dp並且運用自如,絕對不是什麼容易的事。
dp的基本思想:
1. 把乙個大問題的解轉化為若干個小問題的解。
2. 如果得到了這些小問題的解,然後再經過一定的處理,就可以得到原問題的解。
3. 這些小問題與原問題有著結構相同,即小問題還可以繼續分解。
4 這樣一直分下去,問題的規模就會不斷減小,直到小的不能再小,最終會得到原子問題。
5. 原子問題的解顯而易見,這樣遞推回去,就可以得到原問題的解
dp的具體實現:
1. 分析問題,得體狀態轉換方程
2. 根據狀態轉換方程,從原子問題開始,不斷向上求解,直到得到原問題的解。
3. 這個過程,一般是乙個填表的過程。
哎,好抽象呀!木有辦法,如果拋開具體問題,只講原理,效果就是這樣的坑爹。下面都是一些經典的題目,還是結合這些具體問題,一點一點慢慢體會吧。
poj 1088 滑雪
poj 1163 the ********
poj 1050 to the max
poj 1159 palindrome
poj 1458 common subsequence
poj 1141 brackets sequence
poj 1160 post office
poj 1037 a decorative fence
動態規劃入門(四)DP 基本思想與實現
poj1160,post office。動態規劃的經典題目。呃,又是經典題目,dp部分的經典題目怎就這麼多。木有辦法,事實就這樣。求 在村莊內建郵局,要使村莊到郵局的距離和最小。設有m個村莊,分別為 v1 v2 v3 vm,要建n個郵局,分別為p1 p2 p3 pn。在dp的問題中,經常有從m個物體...
動態規劃基本思想
動態規劃與貪心策略類似,將乙個問題的解決方案視為一系列決策的結果。不同的是,貪心演算法每採用一次貪心選擇便做出乙個不可撤回的決策,而在動態規劃中,還要考察每個最優決策序列中是否包含乙個最優決策自序列。使用動態規劃時,所求問題應具有以下兩種性質。1.最優子結構性質 所求問題的最優子結構性質是採用動態規...
動態規劃入門(dp)
dp的基本思想,是把大問題轉化成乙個個小問題,然後遞迴解決。所以本質思想的話還是遞迴。dp最重要的是要找到狀態轉移方程,也就是把大問題化解的過程。舉個例子 乙個數字金字塔 112 2332 2243 133 在上面的數字三角形中尋找一條從頂部到底邊的路徑,使得路徑上所經過的數字之和最大。路徑上的每一...