硬幣組合問題

2021-09-27 06:26:46 字數 781 閱讀 7642

1分2分5分的硬幣,組成1角,共有多少種組合。

不妨將這個問題一般化,即給定乙個非負陣列,求有多少種組合可以組成n。

dp[i][n]表示用前i + 1中硬幣所能組成的n的種數

遞推關係:dp[i][sum] = dp[i-1][sum - 0vm] + dp[i-1][sum - 1vm] + dp[i-1][sum - 2vm] + … + dp[i-1][sum - kvm]; 其中k = sum / vm。

返回值。返回dp[i][n]。

**如下:

/**

* n為總數,coins陣列為硬幣的面值,求有多少種組合

* @param n

* @param coins

* @return

*/public

static

intcoingroups

(int n,

int[

] coins)

for(

int i =

1;i < coins.length;i ++)}

}return dp[coins.length -1]

[n];

}

方案1的空間複雜度較大,可以優化,**如下:

public

static

intcoingroups2

(int n,

int[

] coins)

}return dp[n]

;}

硬幣組合問題 動態規劃

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

騰訊 硬幣面值組合問題

題目描述 有n種不同面值的硬幣,每種面值的硬幣都有無限多個。為了方便攜帶,希望帶盡量少的硬幣,並且要能組合出1到m之間 包括1和m 的所有面值。輸入第一行包含兩個整數m,n,含義如題目所述。第二行包含n個整數,第i個整數表示第i種硬幣的面值。輸出輸出乙個整數,表示最少需要攜帶的硬幣數量。如果無解,則...

CI8 7 硬幣組合問題

給定無限個面值為25分 10分 5分 1分的硬幣,計算可以組成n分的組合方式的數目。思路 這是乙個遞迴問題。例如n 100,我們先考慮最大的25分硬幣。先取0個25分硬幣,然後遞迴去組成100分 接著取1個25分硬幣,然後遞迴去組成75分 接著再取2個25分硬幣,然後遞迴去組成50分,等等。每次取了...