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