-1

配列からすべての可能な一意の組み合わせを生成しようとしていますが、すべての組み合わせを生成するほど簡単ではありません.... 私は配列{a、b、c、d、e、f}を持っています...私の結果は次のようになるはずです...

  1. ab、cd、ef
  2. abc、def
  3. ac、bd、ef
  4. abcf、エド
  5. ....等

...基本的にすべての結果セットに配列のすべての要素を含める必要があります....また、「ab」は「ba」と同じであり、「abcd」は「dcba」または「cbda」と同じです。 ... 位置は関係ありません .... 繰り返しは許可されていません ... 'aaa' または 'aa' は有効ではありません ... 誰かがこの問題の解決策を提供してくれるとありがたいです ....

4

2 に答える 2

0
 String [] new_array=new String[N];
 array.length=length.of("befdac");
 for(int i=0;i < array.length;i++) //this is first digit

{

for(int j=0;j < array.length;j++) //this is second digit
{
if(i==j)continue;
       ................ same with other digits

        {
         if((i==j)||(i==k)) continue;
        // start counting in this most inner block
        new_array[i][j][k][l]...[last_digit]=byte(i+65)+byte(j+65)+byte(k+65)+.....+byte(last_digit+65);
        //65=a, 66=b,......

         }
 }
}

new_array[][][][]...[] 私が試したことのないコードになります。あなたが自分でやるのが一番です。これは最適化されていません。いくつかのポイントを取得するための最初の回答のために作成されました

于 2012-06-22T18:57:59.633 に答える
0

セットサイズの可能なすべての一意のセットを作成することをお勧めします。次に、すべての可能な順序ですべての可能な値を挿入します。たとえば、可能な値が 5 つの場合、サイズは次のように設定されます。

1 1 1 1 1
1 1 1 2
1 2 2
1 1 3
1 4
2 3
5

次に、実際の値をセットに入れます。セット サイズの最初のセットについては、次のようになります。

a, b, c, d, e

すべてのセットが同じサイズであるため、これはあまり興味深いものではありません。3 番目のセット サイズのセットにスキップしてください。ここで、セットを埋めてからシフトすると、次のようになります。

a, bc, de
b, cd, ea
c, de, ab
d, ea, bc
e, ab, cd

これは完全な解決策ではありませんが、問題を 2 つに分割しました。そこから解決できると思います。

于 2012-06-22T23:19:37.023 に答える