0

重複の可能性:
可変長の可変数の配列から1つの要素で構成されるすべての順列を見つけるにはどうすればよいですか?

以下のような要素を持つ配列がn個あるとします。

 a1 -> e11,e12,e13

 a2 -> e21,e22,e23,e24,e25

 a3 -> e31,e32

 a4 -> e41,e42,e43,e44

 ...

 an -> en1,en2,en3,en4,en5,en6

上記の各配列から、n個の要素を含むすべての可能な順列を取得したいと思います。

exmの場合。

 e11,e21,e31,e41.........,en1

 e13,e25,e32,e41.........,en6

等々...

効率的な方法と、可能であればJavaまたはCのコードスニペットを提案してください。

4

2 に答える 2

0

次の疑似コードを使用できます。

次の順列を取得する関数:

function NextPermutation(int[] current)
{
    current[0] = current[0] + 1;
    int pointer = 0;
    while(pointer <= n && current[pointer] == limit[pointer])
    {
        current[pointer] = 0;
        pointer = pointer + 1;
        current[pointer] = current[pointer] + 1;
    }
}

事前人口コード:

    int[] limit = new int[n + 2];
    int[] current = new int[n + 2];
    limit[1] = a1.length;
    ...
    limit[n] = an.length;

    while(current[n+1] == 0)
    {
        Print(current);
        NextPermutation(current);
    }

current配列には、配列へのインデックスが含まれますa1, a2, ... , an

于 2013-01-29T12:17:24.993 に答える
0

あなたはすべての配列の組み合わせに興味があるので、ここではForループが素晴らしいでしょうここに解決策があります(ただし、構文を変更して機能させる必要があります)

int i = 0
int j=0
int k =0

while(i<arraylength(a1))
{
while (j < arraylength(a2))
{
//and so  till an
print a1[i],a2[j];
j++;
}
i++;
}
于 2013-01-29T13:55:27.780 に答える