最近在學動態規劃,做乙個小總結,同時也督促自己繼續做總結。1.什麼是動態規劃?什麼樣的問題適用於動態規劃?
2.動態規劃的特徵
3.動態規劃適用條件
4.常用解題步驟
5.常用模型
6.fibonacci數列
1.什麼是動態規劃?什麼樣的問題適用於動態規劃?
如果要求乙個問題的最優解(最大值或最小值),而且該問題能夠分解為若干個子問題,並且子問題之間存在重疊的子問題,則考慮使用動態規劃。
使用遞迴解決問題時,因為有重疊子問題,會有重複計算。函式的遞迴呼叫會占用大量棧記憶體和時間,導致時間複雜度,空間複雜度高。
2.動態規劃的特徵
3.適用條件
4.常用結題步驟
確定子問題:分析哪些變數隨問題規模變小而變小,哪些變數與問題規模無關
確定狀態:根據上面找到的子問題給子問題限定狀態
推出狀態轉移方程
確定邊界條件
確定實現方式
5.常用模型
lis、lcs、01揹包、完全揹包、區間模型、樹狀模型
6.fibonacci數列
使用遞迴解決fibonacci數列,因為在fibonacci數列中有重複子問題,遞迴會產生重複計算問題。
遞迴解決:
public
intgetfibnacci(int i)
動態規劃:
public
intgetfibnacci_dp(int n)
後面將對每個模型給出例子加以學 動態規劃 什麼是動態規劃?
先來看看 資訊學奧賽一本通第5版 是怎麼說的 動態規劃程式設計是對解最優化問題的一種途徑 一種方法,而不是一種特殊演算法。不像前面所述的那些搜尋或數值計算那樣,具有乙個標準的數學表示式和明確清晰的解題方法。動態規劃程式設計往往是針對一種最優化問題,由於各種問題的性質不同,確定最優解的條件也互不相同,...
mysql動態規劃 動態規劃
動態規劃 能夠動態規劃的問題具有以下特點 可分解成規模更小的子問題 子問題的結果可復用 關鍵是要理解狀態轉移方程的含義就好啦!數字三角形 問題描述 在數字三角形尋找從頂到底的路徑,使得路徑經過的數字之和最大。規定每一步只能往左下或右下走,求出最大路徑和。遞迴解法 include include us...
《動態規劃》 ACM 動態規劃例題詳解
描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 圖1 圖1給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,你的任務就是找到最大的和。注意 路徑上的每一步只能從乙個數走到下一層上和它最近的左邊的那個數或者右邊的那個數。輸...