アルゴリズムと計算量の問題
円、 円、 円の硬貨がそれぞれ十分な枚数あるとする。正の整数 に対し、 円をちょうど支払う硬貨の組み合わせのうち、枚数が最小のものの枚数を とする。また、「残りの金額を超えない硬貨のうち最も額の大きいものを 枚使う」ことを残りが 円になるまでくり返す貪欲法で 円を支払ったときの枚数を とする。
を満たす整数 のうち、 となるものをすべて求めよ。
この問題で使うもの
- 貪欲法が最適でない場合の判定(説明と入口の問題)
この問題を解けるようになるまで(2 技能)
読み込み中…
右端(太枠)がこの問題で使う技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。
一覧で見る(前提が先)
ヒント
行き詰まったら、上から順に 1 つずつ開いてください。
ヒント 1
貪欲法の枚数 と、動的計画法で求めた最小枚数 を から まで並べて比べる。
ヒント 2
(、使えない項は除く)で表を作り、貪欲法は 円を使えるだけ使ってから 円、 円の順に使う。
ヒント 3
は で となる。たとえば では貪欲法は となるが、ほかの払い方はないか考えてみよう。
答えと解説
答えを見る
どこでつまずきましたか?(選ぶと、戻る場所を案内します)
解説を読む
手順 1:動的計画法で を求める。
とし、 に対して
で表を埋める。最後に使う硬貨を 円とすると、残り 円は最小枚数で払うのが最善なので、この漸化式が成り立つ。
手順 2:貪欲法で を求める。
大きい硬貨から使えるだけ使う。
- :、、、 なので
- : で
- : で
- : で
- : で
- : で
- : で
- : で
- : で
手順 3:比べる。
で と を比べると、異なるのは次の つだけである。
- :、()
- :、()
それ以外の では である。
よって、求める は である。
別解
硬貨は 1, 3, 4 円。まず最小枚数 を動的計画法 で求める()。
。
次に貪欲法の枚数 を求める。
。
比較すると、 となるのは (3>2)と (4>3)のみ。
検算: は 2 枚、 は 3 枚で、貪欲法の枚数より少ない。他の では を上の表で確認した。