1、思想:避免重複的計算,先將計算過的值儲存下來,如果發現有相同的步驟,直接將事先儲存好的值拿出來。
動態規劃其實質上是通過開闢記錄表,記錄已求解過的結果,當再次需要求解的時候,可以直接到那個記錄表中去查詢,從而避免重複計算子問題來達到降低時間複雜度的效果。實際上是乙個空間換時間的演算法。
動態規劃,在一步選擇的時候,是通過從以前求出的若干個與本步驟相關的子問題最優解中選擇最好的那個,加上這一步的值,來構造這一步那個子問題的最優解,而如果以前求出的若干個子問題不儲存下來,就需要重新求(通常是遞迴所致)。動態規劃用武之地也無非是儲存這些重複的子問題而避免重新求解而達到高效的目的。
動態規劃都是用來求解最優解的問題。
動態規劃方法
動態規劃和分治法類似,也是將問題分解為一些列的子問題,通過尋找子問題的最優解來得到問題的解。區別在於 1,分治法的子問題相互獨立,相同的子問題被重複計算,而動態規劃方法解決了這一問題。重複子問題的計算導致很多用遞迴實現的分治法方案的時間複雜度按指數增長,而引入動態規劃方法或者備忘錄方法,複雜度降低到...
動態規劃 換錢方法
換錢方法 給定陣列arr,arr中所有的值都是整數且不重複,每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個整數,aim代表要找的錢數,求換錢有多少種方法。思路 1.建立一張二維表dp,m n 其中m表示貨幣的種類,行n表示 target 1 即是目標錢數 1 即是 下表以目標錢數...
動態規劃優化方法
之前我們學習過動態規劃方法,但是並沒有對dp進行系統細緻的優化。今天來看一下dp的優化方法。做變換 等式就可以看作一條直線,每個j都確定出乙個點 x,y 對於當前要求解的i,其斜率已確定 且隨i單增 要使dp i 最大即要使這條直線過某乙個j形成的點並使得的截距最小。假設之前已處理完前9個點,將他們...