実現したいこと
容量10リットルのナップサックがある。
ナップサックのなかに袋が四つある。
袋は黄色、青色、赤色、白色。
袋は色ごとに1、2、3、…、9、10リットルのサイズがある。全部で40種類。
手元には大小様々な大きさ、色、価値をもったボールがある。
ボールの色は黄色、青色、赤色、紫色、緑色、白色の6種類。
ボールを袋に詰めたうえでナップサックに収納、ナップサックに入ったボールの価値を最大化したい。
制約は下記の通り。
①ボールは直接ナップサックには入れることができず、必ず袋に入れた状態である必要がある。
②ボールを袋に入れるときには同じ色の袋にしか入れられない。
③白色の袋はどの色のボールでも入れることができる。
④白色のボールはどの色の袋にでも入れることができる。
⑤同じ色の袋はナップサックに入れることができない。つまり、1リットルの黄色の袋を入れた状態でさらに2リットルの黄色の袋を入れることはできない。
例
①2リットルの赤色のボール(5円)
②2リットルの赤色のボール(6円)
③9リットルの赤色のボール(12円)
④2リットルの黄色のボール(3円)
⑤5リットルの黄色のボール(4円)
⑥4リットルの青色のボール(4円)
⑦3リットルの青色のボール(5円)
⑧7リットルの紫色のボール(6円)
⑨2リットルの緑色のボール(5円)
⑩4リットルの緑色のボール(6円)
A 8リットルの白色のボール(10円)が各1つずつある場合。
→
制約条件のなかで価値を最大化する入れ方は、
・2リットルの赤色の袋に①を入れる
・2リットルの白色の袋に②を入れる
・2リットルの黄色の袋に④を入れる。
・3リットルの青色の袋に⑦を入れる。
価値は19円、合計の容量は9リットル、となる。
かなり複雑ですがいかがかでしょうか?
Pythonで、実装したいと考えてます。
よろしくお願いします。
発生している問題・分からないこと
python初心者です。pythonで実装したいが、どのようにコードで表現したら良いかわからない。
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
コストと容量が与えられた一般的なナップサック問題はpythonで記述できることがわかった
補足
特になし
あなたの回答
tips
プレビュー