-1

不明なエントリ (最小 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
...

等々。

4

2 に答える 2