ペン質問 - 額面及びいくつかの硬貨の合計値の量が与えられた、異なる種類の組み合わせの数を計算するための関数を書く、量を与えられている各金種の硬貨の組み合わせを必要とします。各宗派のコインの数は無制限です。

 

コインと合計量のいくつかの金種所与、書き込み機能は、異なるタイプの組み合わせの数を算出し、硬貨の各金種の量は、組成物が量を与えられている必要。各宗派のコインの数は無制限です。
なお、
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 [量]。
    }

おすすめ

転載: www.cnblogs.com/cnndevelop/p/12221188.html