プロが教える店舗&オフィスのセキュリティ対策術

下記のようなグループがあります。
List1=100、200、300、400、500
List2=150、200、250、300、350
List3=50、100、150、200、250
ここで、それぞれのListから複数選択し、合計が700になる
組み合わせをVBで、表示したいのです。

例えば、List1から300、500を選択。
List2から150、200、250を選択。
List3から50、150、200を選択。

この場合の答えは、
List1:300 List2:200 List3:200
List1:300 List2:250 List3:150
List1:500 List2:150 List3:50
が答えなので、これを表示したいのです。

まったく分かりません。。。宿題の締め切りがちかいので、どなたか助けてください~(>_<)

A 回答 (2件)

データを配列に格納して、総当りで判定すれば良いと思います。


今VBの環境がないので、ソースはやや適当ですが大体こんな感じでしょうか。

dim List1(4), List2(4), List3(4)
'ここで配列にそれぞれの値を代入
dim i, j, k
for i = 0 to 4
 for j = 0 to 4
  for k = 0 to 4
   if List1(i) + List2(j) + List3(k) = 700 then
    'ここで表示の処理
   endif
  next
 next
next
    • good
    • 0
この回答へのお礼

ありがとうございます!
考え方は分かるのですが、VBで書くことができません。。。
ほんとにVBの知識がなさすぎて、恥ずかしいです。

お礼日時:2006/11/15 23:00

もうちょっと頑張ってみてくださいな。


人間の場合も、コンピュータの場合も一緒です。
まず、List1から300と500を選択しました。
単純に考えて二つの事を一気にやるのは無理ですよね。
じゃまず300から考えます、
List2の一番目には150が入ってますよね。
次にList3の一番目には50が入ってます。300、150、50を足しても700ではないです。
それじゃList3の2番目には100がはいってます。300、150、100を足しても700にはなりません。
これをList3の5番目までします。
で今度は、List2に戻って2番目の値を取得する200ですよね。
次に
List3の一番目には50が入ってます。300、200、50を足しても700ではないです。
それじゃList3の2番目には100がはいってます。300、200、100を足しても700にはなりません。
それじゃList3の2番目には200がはいってます。300、200、200を足しても700になりました。では、出力or保存する。
これをList3の5番目までします。(List内には同じ数字ないと分かっている場合)
ってな感じで出来ませんか。
2重ループ、配列を使えば余裕です。

頑張って解いて下さい。
    • good
    • 1
この回答へのお礼

とても分かりやすいです!ありがとうございます!!
でも、ごめんなさい、2重ループや配列のVBでの書き方が分からないんです。。学校では、C言語を学んできました。なのにVBで宿題をだされてしまいました。がんばります、ありがとうございます。

お礼日時:2006/11/15 23:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!