Menu
CoddyTech

Coin Change

ふつう動的計画法python iconjava iconcpp iconc iconjs icon+10

異なる額面の硬貨のリスト coins と目標金額 amount が与えられます。各額面の硬貨は好きな回数だけ使用できます。硬貨の合計がちょうど amount になる組み合わせのうち、硬貨の枚数が最小となる枚数を返してください。そのような組み合わせがない場合は -1 を返します。金額が 0 の場合、必要な硬貨は 0 枚です。

関数

coinChange(coins: integer-array, amount: integer) → integer
coinsinteger-array
異なる硬貨の額面。それぞれ何度でも使用できます
amountinteger
支払う合計金額を正確に
戻り値integer
必要な最小枚数のコイン。金額を作れない場合は -1

制約

  • 1 ≤ coins.length ≤ 12
  • 1 ≤ coins[i] ≤ 104
  • 0 ≤ amount ≤ 104
  • すべてのコインの値は異なります。

例

入力
coins = [2, 5, 10]amount = 27
出力
4
説明
10 + 10 + 5 + 2 は4枚のコインで27になります。3枚ではできません。27は奇数なので、5がちょうど1枚必要で、残りの2枚の合計は最大でも20となり、22に届きません。
challenge icon

発展問題

最少枚数の硬貨を見つけるのではなく、amountになる硬貨の組み合わせが何通りあるか数えられますか?

コードをリセット
def coinChange(coins, amount):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

coins = [2, 5, 10]
amount = 27

期待される出力

4