コインと合計量のいくつかの金種所与、書き込み機能は、異なるタイプの組み合わせの数を算出し、硬貨の各金種の量は、組成物が量を与えられている必要。各宗派のコインの数は無制限です。
なお、
0 <=金額AMOUNT <= 5000
1 <=金種の硬貨<= 5000
金種が500未満である
答え未満、32ビット整数の範囲
は実施例1:
入力:量= 5、コイン= [ 1、2、5]
出力:4
説明:次のように4つの組み合わせが存在するである:
5 = 5
5 2 = 1 + 2 +
5 + 1 + 1 = 2 1 +
5 + 1 = 1 + 1 + 1 + 1
例2:
入力:量= 3、コイン= [2]
出力:0
説明:3 2金種は、で表すことができません
/ ** *計算一定量、硬貨の金種の組成物の種類 * * @param COIN配列リテラル * @paramのAMOUNT総量 * @return * / パブリック 静的 int型 countWays(INT [] COIN、int型AMOUNT){ IF(AMOUNT <0 | | AMOUNT> 5000 || coin.length> 500 ){ 戻り 0 ; } INT [] DP = 新しい新しい INT [AMOUNTの+ 1 ]; DP [ 0] = 1 ; のための(INTI = 0; I <coin.length。++ I){ 場合(コイン[I] <1枚の||コイン[I]> 5000 ){ 戻り 0 。 } のための(INT J =コイン[I]; J <=量; ++ J){ DP [J] + = DP [J - コイン[I]]。 } } もし(DP [量] <0 || String.valueOf(DP [量])の長さ()> 32 ){ 戻り 0 。 } 戻りDP [量]。 }