不明なエントリ (最小 6) を持つ c++ の配列があります。2 つのグループを 3 つ作成する for ループ (おそらくいくつかの for ループを含む) が必要です。グループの順序やグループ内は気にしません。そして注意が必要なのは、二重カウントが許可されていないことです。私はこのようなことを試しましたが、明らかにトリプルカウントです...
for(int i = 0; i < nArray - 1; i++)
{
for(int j = i+1; j < nArray; j++)
{
for(int k = 0; k < nArray - 1; k++)
{
for(int l = k+1; l < nArray; l++)
{
for(int m = 0; m < nArray - 1; m++)
{
for(int n = m+1; n < nArray; n++)
{
if(k!=i && k!=j && l!=i && l!=j && m!=i && m!=j && n!=i && n!=j && m!=k && m!=l && n!=k && n!=l)
{
std::cout << array[i] << "-" << array[j] << std::endl << array[k] << "-" << array[l] << std::endl << array[m] << "-" << array[n] << std::endl << std::endl;
}
}
}
}
}
}
}
編集: たとえば、配列を {1,2,3,4,5,6} とすると、6 つのエントリがあります。出力は次のようになります。
12-34-56
12-35-46
12-36-45
13-24-56
13-25-46
13-26-45
14-23-56
14-25-36
14-26-35
15-23-46
15-24-36
15-26-34
16-23-45
16-24-35
16-25-34
ただし、12-34-56 があるため、12-43-56 または 34-12-56 は存在しないはずです。
配列 {1,2,3,4,5,6,7} の場合
12-34-56
12-34-57
12-34-67
12-35-46
12-35-47
12-35-67
...
等々。