- ベストアンサー
複数の条件からセットをたくさん作成する方法
- 頭の良い方、どなたか教えてください。複数の条件からセットをできるだけたくさん作成したいです。
- 3種類の宝石(ダイヤ、ルビー、サファイア)を1個ずつで1セットとし、効率的にセットを作成したいです。
- 必要な石の数と各人の所持数を考慮して振り分け手順を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
8セット作ると青い石は1個だけ余るので、 山田さんの組み合わせは、 30a+22b+47c=321 または 30a+22b+47c=320 となるはず。 この組み合わせを調べると、 30*6+22*0+47*3=321 30*4+22*7+47*1=321 30*7+22*5+47*0=320 30*0+22*6+47*4=320 の4通りのみ。 同様に、田中さんの組み合わせは、 30*5+22*0+47*3=291 30*3+22*7+47*1=291 30*6+22*5+47*0=290 の3通りのみ。 で、それぞれの個数が8を超えない組み合わせは、 30*0+22*6+47*4=320 30*5+22*0+47*3=291 となって、答が出てきます。 これはたまたまうまくいっただけで、一般化はできません。 答が一発で出るアルゴリズムはないでしょう。 エクセルで求めるなら、総当り法で全ての組み合わせを調べるしかありません。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
一般的には「整数線形計画法」で, アルゴリズム自体はありますがおそらくさほど効率的ではありません. もちろん「一般的には」なのでこの問題に限定すればいい方法があるのかもしれませんが... ちょっとわかんないなぁ.
- nag0720
- ベストアンサー率58% (1093/1860)
1セット作るのに必要な青い石は99個 青い石の合計は793個なので、最大でも8セットしかできない。 8セット作る組み合わせは、 山田さん:ルビー6個、サファイヤ4個 ・赤い石:20×6+5×4=140 ・青い石:22×6+47×4=320 田中さん:ダイヤ5個、サファイヤ3個 ・赤い石:13×5+5×3=80 ・青い石:30×5+47×3=291 池田さん:ダイヤ3個、ルビー2個、サファイヤ1個 ・赤い石:13×3+20×2+5×1=84 ・青い石:30×3+22×2+47×1=181
お礼
ご回答ありがとうございます!! これを、どのようにして導き出しましたか? その手順を知りたいです。 たとえば、青い石を一番多く持っている人から、青い石が必要な数が多い宝石から割り振っていく、とか。 エクセルで使用したいと思っているので、アルゴリズムが必要なのです。 ぜひお教えください!!
お礼
アルゴリズムはないですか。 種類が多くなるとできないのですね。 うーん、残念です。 それでも、組合せで考えていく方法は勉強になりました。 いろいろな考え方がありますね。 ありがとうございました(^^)