3

こんにちは、私は C++ を使用しています。例 {1,2,3} 間のすべての可能な組み合わせを含む一連の数値から配列を取得する簡単な方法を見つけることができますか?

  { {3,1,2},
   {1,2,3},
   {3,2,1},
   {1,3,2},
   {2,1,3},
   {2,3,1}
  };

5つ以上の数字が出た場合の問題 120通りの組み合わせを作る方法

4

1 に答える 1

7

それらは順列であり、組み合わせではありません。

std::next_permutationシーケンスのすべての順列を計算するために使用できます。次のようになります。

std::array<int, 3> data = { 1, 2, 3 };
do {
    // use current permutation
} while (std::next_permutation(data.begin(), data.end()));

std::arrayこの例ではC ++ 0xから使用しました。arrayコンテナーは、C ++ TR1およびBoostにもあります。このアルゴリズムは、のように双方向に反復可能な任意のコンテナーでも機能しますstd::vector。)

于 2011-01-10T03:30:51.253 に答える