アルゴリズムと計算量の問題
円、 円、 円の硬貨がそれぞれ十分な枚数あるとする。 以上の整数 に対し、 円をちょうど支払うときの硬貨の枚数の最小値を とする( とする)。 は、 のとき漸化式
を満たす。この漸化式を用いて の表を順に埋め、 を求めよ。
この問題で使うもの
- 動的計画法の基本(硬貨の最小枚数)(説明と入口の問題)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
動的計画法を使う。 から始めて、与えられた漸化式で を小さい順に表に書き込んでいこう。
ヒント 2
各 について、、、( のものだけ)の最小値をとる。
ヒント 3
途中の値は となる。 はこの 3 つにそれぞれ を足した値の最小値である。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
考え方(動的計画法)
円を最小枚数で払うとき、最後に使う硬貨を 円( のいずれか)とすると、残りの 円も最小枚数で払うのが最善である。そのため が成り立つ。小さい から順に表を埋めていけば、必要な値はいつもすでに計算済みになっている。
表を埋める
から始める。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
よって である(例えば )。
参考:大きい硬貨から順に使う方法(貪欲法)では の 枚になり、最小にならない。表を埋める方法なら、このような場合でも正しく最小値が求まる。
別解
漸化式で表を順に埋める。
検算: で 3 枚。2 枚で作れる金額は などで、 は含まれない(、、 など)。1 枚でも不可能。よって最小は 3 枚。