演算法 動態規劃

2021-10-08 19:47:42 字數 1204 閱讀 8095

解決動態規劃問題:

狀態壓縮——減小空間複雜度

對於每個i,維護搶還是不搶兩個狀態

狀態表示

狀態方程

base case

求差的最大值,每次計算先前最大與當前最大的最大。

盡可能多買,就遇到差價就買

交易兩次的話,從頭到尾看一次,從尾到頭看一次。然後結合起來找最優。

相當於找左邊與右邊的最優。

狀態表示的多樣性:

二維:dp[i][j]

狀態轉移方程

思路3:二分查詢?o(n

logn

)o(nlogn)

o(nlog

n)0-1揹包問題是,對於乙個承重w的揹包,有n個物品,每個物品有對應的重量以及價值。怎麼裝才能獲得最大價值?

揹包問題的變體:

變成揹包問題,但不需要考慮價值,只考慮能不能裝(true or false)

狀態表示:dp[

i]

dp[i]

dp[i

],amount為i時最少硬幣數。

狀態轉移方程:dp[

i]=m

in(d

p[i−

c],f

orci

ncoi

ns)+

1dp[i] = min(dp[i-c],for \quad c\quad in \quad coins)+1

dp[i]=

min(

dp[i

−c],

forc

inco

ins)

+1狀態表示:dp[

i][j

]dp[i][j]

dp[i][

j]:使用前i個硬幣,金額為j時的組合數

狀態轉移:dp[

i][j

]=dp

[i−1

][j]

+dp[

i][j

−coi

ns[i

]]

dp[i][j] = dp[i-1][j] + dp[i][j-coins[i]]

dp[i][

j]=d

p[i−

1][j

]+dp

[i][

j−co

ins[

i]]

演算法 動態規劃

動態規劃 把多階段過程轉化為一系列單階段問題,利用各階段之間的關係,逐個求解 演算法例子 1.鋼條切割 serling 公司購買長鋼條,將其切割為短鋼條,切割工序假設沒有成本支出,公司管理層希望確定最佳的切割方案。假設serling公司 一段長度為i英吋的鋼條的 為pi。鋼條的長度為整英吋,下表給出...

演算法 動態規劃

1 問題具有最優子結構性質。如果問題的最優解所包含的子問題的解也是最優的,我們就稱該問題具有最優子結構性質。比如說在揹包問題中,最高總價值 max 選擇不放該物品時達到的總價值,決定放該物品時揹包剩餘容量能達到的最大價值 該物品價值 顯然,最高總價值的解一定包含 選擇不放該物品時達到的總價值 和 決...

演算法 動態規劃

動態規劃的定義 動態規劃是運籌學的乙個分支,是求解決策過程的最優化的數學方法。20世紀50年代初美國數學家r.e.bellman等人在研究多階段決策過程的優化問題時,提出了著名的最優化原理,把多階段過程轉化為一系列單階段問題,利用各階段之間的關係,逐個求解,創立了解決這類過程優化問題的新方法 動態規...