全探索
次のような問題を考えます。
[問題]
500円玉がA枚、100円玉がB枚、50円玉がC枚あります。 これらの硬貨の中から何枚かを選び、合計金額をちょうどX円にする方法は 何通りありますか。
[条件]
・それぞれの枚数A、B、Cは0以上かつ50以下の整数。 ・目標金額Xは50以上かつ20000以下の50の倍数。 ・それぞれの枚数の合計(A+B+C)は1以上。
解法・ソースコード
この問題は、各硬貨の枚数分それぞれループを回して目標の金額になるかどうかをチェックすることで解くことができます。(三重ループしながら金額をチェック)
硬貨は 0枚 の時があるので、ループ回数は各硬貨の 枚数分 + 1 となることに注意してください。
[Google Colaboratory]
1 | #---------- 入力例 ---------- |
[実行結果]
500円0枚、100円0枚、50円2枚 500円0枚、100円1枚、50円0枚 解: 2
解は 2通り あることが分かりました。
硬貨の組み合わせは、合計金額が一致した場合のそれぞれの硬貨数を表示することで確認できます。