動態規劃(一)

2021-08-07 19:42:30 字數 786 閱讀 8296

動態規劃的兩種常用形式:

1)遞迴型(在函式中呼叫自身):

優點:直觀,容易編寫

缺點:可能會因為遞迴層數太深導致爆棧,函式呼叫帶來額外時間開銷。無法使用滾動陣列節省空間。總體來說,比遞推型慢。

2)遞推型(for迴圈):

效率高,有可能使用滾動陣列節省空間。

有的問題只能用遞迴解決,有的問題既可以用遞迴,也可以用遞推。

遞迴到遞推的一般轉化方法:

遞迴函式有n個引數,就定義乙個n維的陣列,陣列的下標是遞迴函式引數的取值範圍,陣列元素的值是遞迴函式的返回值,這樣就可以從邊界值開始,逐步填充陣列,相當於計算遞迴函式值的逆過程。

動態規劃解題的一般思路(遞推型):

1.將原問題分解為子問題:子問題與原問題形式相同或類似,子問題解決,原問題即解決。子問題的解一旦求出就會被儲存,所以每個子問題只需求解一次(節省時間)。

2.確定狀態:子問題確定,則狀態確定。狀態值即為對應的子問題的解。若k個整型變數能構成乙個狀態,取值範圍分別是n1,n2,n3...nk,那麼就可以用乙個k維的陣列array[n1][n2]...[nk]來儲存各個狀態的值。

3.確定初始狀態的值(邊界值)

4.確定狀態轉移方程:如何通過乙個或多個已知的狀態值,求出另乙個狀態的值。

動態規劃 一

在現實生活中,有一類活動的過程,由於它的特殊性,可將過程分程若干個互相聯絡的階段,在它的每一階段都需要作出決策,從而使整個過程達到最好的活動效果。當然,各個階段決策的選取不是任意確定的,它依賴於當前面臨的狀態,又印象以後的發展,當各個階段決策確定後,就組成乙個決策序列,因而也就確定了整個過程的一條活...

動態規劃 (一)

對於動態規劃的學習總共進行了兩節課,到現在為止還是一頭霧水,雖然看懂了老師上課講的例題,但是做v judge的時候還是都不太會,我主要認為我只知道了動態規劃的基本思想,就是將乙個大的問題,分成若干個小問題,但與貪心演算法不同的是,動態規劃中的每乙個小問題之間都相互影響,在每一步都取得最優解,且在不斷...

動態規劃(一)

題目描述 有n個任務,每個任務有起始時間點,結束時間點,獲得的報酬。同一時間不能同時做兩個任務,問最多可以獲得多少的報酬。解題思路 陣列 pre 儲存每個任務前乙個能做的任務 要做當前任務的情況下 opt 儲存前i個任務的最優解 關鍵思想 為了讓資料更有序,按照每個任務的結束時間以公升序進行排序。每...