• ベストアンサー

VBの組み合わせプログラムについて。

初めまして。複数部品からなる製品の組立途中の形状パターンを抽出する プログラムを作成しているのですが、良いループが組めず困っています。 例えばA,B,C,Dと4つの文字からなる以下のような組み合わせ作成するループ文を作成したいです。 条件 ・入力文字数は可変します。A,B,C,D→A,B,C,D,E ・組み合わせ内で同じ文字は2度使用されません。 ・A,B,CとB,C,Aは同一とします。 1文字のパターン A B C D 2文字のパターン A,B A,C A,D B,C B,D C,D 3文字のパターン A,B,C A,C,D B,C,D 4文字のパターン A,B,C,D 4文字からなるパターンは全部で14パターンになります。 以上、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

n文字の組み合わせパターンは2^n-1個あり、その組み合わせは1~2^n-1までを2進数にして各ビットに文字を対応させるとでてきます。 4文字の場合は、1~15までを2進数にして、1ビット目をA、2ビット目をB、3ビット目をC、4ビット目をDとすると 1 -> 0001 -> A 2 -> 0010 -> B 3 -> 0011 -> AB 4 -> 0100 -> C 5 -> 0101 -> AC 6 -> 0110 -> BC 7 -> 0111 -> ABC 8 -> 1000 -> D 9 -> 1001 -> AD 10 -> 1010 -> BD 11 -> 1011 -> ABD 12 -> 1100 -> CD 13 -> 1101 -> ACD 14 -> 1110 -> BCD 15 -> 1111 -> ABCD となります。例示されたパターンでは、ABDが抜けているため14個になっています。

その他の回答 (1)

noname#181803
noname#181803
回答No.1

配列に1文字づつ格納し、配列をループして、その文字が1つであることを確認すればよいのではないでしょうか?

関連するQ&A