動態規劃 硬幣面值組合(上台階)

2021-07-05 16:52:31 字數 874 閱讀 3819

不難發現,此題就是完全揹包問題。同時也是fibonacci的動態規劃解法,所有有必要進行深入理解。

動態規劃:

dp[i][sum] = 用前i種硬幣構成sum 的所有組合數。

狀態轉移方程:

dp[i][sum] = dp[i-1][sum - 0*vm] + dp[i-1][sum - 1*vm] + dp[i-1][sum - 2*vm] + … + dp[i-1][sum - k*vm]; 其中k = sum / vm

dp[i][0] = 1 where sum= 0

dp[0][sum] = 0 where i=0

注意:fibonacci解f(n-1) + f(n-2) 這種可能比較簡單,但是以下這種情況就比較麻煩了:f(n-1) + f(n-2) +…+f(n-k),所以這種情況動態規劃來解就比較好了。還有一點值得注意的就是,f(n-1) + f(n-2) 其實就是動態規劃的狀態轉移方程。dp[i] = dp[i-1] + dp[i-2]

int coincombinations(int coins, int coinkinds, int sum)

for (int i = 1; i <= coinkinds; ++i)}}

return dp[coinkinds][sum];

}

其實本題就是fibonacci問題,對應1分2分5分的硬幣三種,組合成1角,共有多少種組合?這個問題就是:

f(n) = f(n-1) + f(n-2) + f(n-5) .其中f(0) = 1 , f(1) = 1, f(2) = 2, f(3) = 2, f(4) = 3.

後面我們還需要研究fibonacci的解法。

硬幣面值組合(上台階)

假設我們有8種不同面值的硬幣 1,2,5,10,20,50,100,200 用這些硬幣組合夠成乙個給定的數值n。問總過有多少種可能的組合方式?類似的題目還有 華為面試題 1分2分5分的硬幣三種,組合成1角,共有多少種組合 創新工廠筆試題 有1分,2分,5分,10分四種硬幣,每種硬幣數量無限,給定n分...

LeetCode 中等 動態規劃 硬幣面值

硬幣。給定數量不限的硬幣,幣值為25分 10分 5分和1分,編寫 計算n分有幾種表示法。結果可能會很大,你需要將結果模上1000000007 示例1 輸入 n 5 輸出 2 解釋 有兩種方式可以湊成總金額 5 55 1 1 1 1 1 示例2 輸入 n 10 輸出 4 解釋 有四種方式可以湊成總金額...

硬幣組合問題 動態規劃

如果我們有面值為1元 3元和5元的硬幣若干枚,如何用最少的硬幣湊夠11元?表面上這道題可以用貪心演算法,但貪心演算法無法保證可以求出解,比如1元換成2元的時候 首先我們思考乙個問題,如何用最少的硬幣湊夠i元 i 11 當i 0,即我們需要多少個硬幣來湊夠0元。由於1,3,5都大於0,即沒有比0小的幣...