• 締切済み

VBで組み合わせのプログラムができなくて困ってます。

下記のようなグループがあります。 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 が答えなので、これを表示したいのです。 まったく分かりません。。。宿題の締め切りがちかいので、どなたか助けてください~(>_<)

みんなの回答

  • tyome2
  • ベストアンサー率21% (28/132)
回答No.2

もうちょっと頑張ってみてくださいな。 人間の場合も、コンピュータの場合も一緒です。 まず、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重ループ、配列を使えば余裕です。 頑張って解いて下さい。

ririminnie
質問者

お礼

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

  • shukugawa
  • ベストアンサー率30% (80/264)
回答No.1

データを配列に格納して、総当りで判定すれば良いと思います。 今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

ririminnie
質問者

お礼

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

関連するQ&A

専門家に質問してみよう