Can you summarize the following document?
        
  動態規劃在查詢有很多重疊子問題的情況的最優解時有效。它將問題重新組合成子問題。為了避免多次解決這些子問題,它們的結果都逐漸被計算並被儲存,從簡單的問題直到整個問題都被解決。因此,動態規劃儲存遞迴時的結果,因而不會在解決同樣的問題時花費時間。  動態規劃只能應用於有最優子結構的問題。最優子結構的意思是區域性最優解能決定全域性最優解(對有些問題這個要求並不能完全滿足,故有時需要引入一定的近似)。簡單地說,問題能夠分解成子問題來解決。

  

  揹包問題作為NP完全問題,暫時不存在多項式時間演算法。動態規劃屬於揹包問題求解最優解的可行方法之一。此外,求解揹包問題最優解還有搜尋法等,近似解還有貪心法等,分數揹包問題有最優貪心解等。 揹包問題具有最優子結構和重疊子問題。動態規劃一般用於求解揹包問題中的整數揹包問題(即每種物品所選的個數必須是整數)。 解整數揹包問題: 設有formula_1件物品,每件價值記為formula_2,每件體積記為formula_3,用一個最大容積為formula_4的揹包,求裝入物品的最大價值。 用一個陣列formula_5表示取formula_6件商品填充一個容積為v的揹包的最大價值,顯然問題的解就是formula_7。  formula_8  對於特例0 1揹包問題(即每件物品最多放1件,否則不放入)的問題,狀態轉移方程:  formula_8  參考Pascal程式碼 參考C++程式碼(不含include和陣列宣告)
動態規劃(英語:Dynamic programming,簡稱英語:DP)是一種在數學、管理科學、電腦科學、經濟學和生物資訊學中使用的,通過把原問題分解為相對簡單的子問題的方式求解複雜問題的方法。