2011-06-23 25 views
-1

すべて、私は2日間この壁に頭を打ちました。私はgoogledgoogledを持っています。私は解決策を見つけることができません。ここで私が持っているものです。すべて3〜6つの異なる文字列の可能な順列

私は、2〜6個の異なる文字列配列(ユーザの選択に応じて)から持っていますが、この質問のために3つの別々の文字列配列を仮定することができます:

  • ARRAY1 - トム、ディック、ハリー
  • ARRAY2 - 食べる、クックス、ドリンク
  • ARRAY3 - スープ、ソーダ、サラダ

「私は結果の配列は、これらの3つの文字列の配列のすべての可能な組み合わせを含むようにしたいが、私はドン同じリストに含まれている値を組み合わせたい(no:Tom Dick Harry)これは私が見て結果の配列だったかである:


  1. トム・食べるスープ
  2. トム食べるソーダ
  3. トム食べるサラダ
  4. ディック食べるスープ
  5. ディック食べるソーダ
  6. ディックはサラダを食べる
  7. ハリーイートスープ
  8. のハリー食べるソーダ
  9. ハリー食べるサラダ

私はVB6のソリューションを探していますが、私は、ほとんどの他のプログラミング言語での溶液またはアルゴリズムをいただければ幸いです。

ご協力いただきありがとうございます。

+0

あなたは、配列を反復処理する方法を知っていますか?入れ子にされたループを知っていますか? – Beta

+0

はい、私はネストされたループを知っていて、それをどのように反復するのですか?私はこのループの周りに私の心を包むことができません。 –

+0

クック・アンド・ドリンクのすべての順列はどうですか? – mbeckish

答えて

5

これはあなたがしなければならないすべてである場合は、単にループのためのトリプルネストされた操作を実行します。

for(int i = 0; i < 3; i++) { 
    for(int j = 0; j < 3; j++) { 
     for(int k = 0; k < 3; k++) { 
      output array1[i] + " " array2[j] + " " + array3[k]; 
     } 
    } 
} 

あなたはVB6に変換することができます。 C#やVB.NETなどの近代的な言語は、あなたがより美しくこれを表現できるようになる:

string[] names = new[] { "Tom", "Dick", "Harry" }; 
string[] verbs = new[] { "Eats", "Cooks", "Drinks" }; 
string[] foods = new[] { "Soup", "Soda", "Salad" }; 

var combinations = from name in names 
        from verb in verbs 
        from food in foods 
        select String.Join(" ", new[] { name, verb, food }); 

foreach(var combination in combinations) { 
    Console.WriteLine(combination); 
} 
+0

私は間違った場所で文字列を連結していたのが間違いです。 –

+0

私は残念ながら、いくつかのレガシーVB6アプリケーションをサポートすることを任されています。あなたのソリューションに感謝します! –

+3

@マーク・クラム:残念ながら?誰かがあなたの時間をお金に変換しようとしています。 – jason

関連する問題