【LeetCode] 322コインChange_Mediumタグ:バックパック

あなたは、異なる宗派やお金の総量のコイン与えられている  量をあなたはその金額を構成するために必要なコインの最小数を計算する関数を書きます。お金の量は、コインの任意の組み合わせによって構成されたことができない場合は、返します  -1

例1:

入力:コイン= [1, 2, 5]、量= 11
出力:3 
説明:11 = 5 + 5 + 1

例2:

入力:コイン= [2]、量= 3
出力:-1

注意:
あなたは、コインの種類ごとの無限の数を持っていることを仮定してもよいです。

被験者は、01バックパックの数に制限は、バックパックのターゲット== si'zeを行い使用することです。 

REFER:  [LeetCode] 5_Dynamicプログラミングシステムブラシのタイトル

コード:

クラスソリューション:
     DEF :coinChange(自己、コイン、量)
         なら ないコイン又は量<0:戻り -1 
        N = LEN(コイン)
        DP = [[フロート(' INF ')] *(量+ 1)のための _ レンジ(N + 1 )]
         のための I における範囲(N + 1 ):
            DP [I] [0] = 0
         のための I における範囲(1、N + 1 のための J 範囲(1、量+ 1 ):
                 もし J> =コイン[I - 1 ]:
                    DP [I] [J] =分(DP [I - 1] [j]は、DP [I] [J -コイン[I - 1] + 1 
                    DP [I] [J] = DP [I - 1 ] [j]の
         戻り DP [n]は[量] もし DP [n]は[量] <フロート(' INF ' -1

 

アレイをスクロールするために使用することができる空間がO(量)のために最適化されています

おすすめ

転載: www.cnblogs.com/Johnsonxiong/p/11141394.html
おすすめ