dua*_*uaa 3 c++ permutation visual-c++-2008 visual-c++
嗨我使用c ++,我可以找到一个简单的方法从一组数字中获取一个数组,其中包含ex:{1,2,3}之间的所有可能组合
{ {3,1,2},
{1,2,3},
{3,2,1},
{1,3,2},
{2,1,3},
{2,3,1}
};
Run Code Online (Sandbox Code Playgroud)
问题是如果我得到5个或更多数字如何使120组合
这些是排列,而不是组合.
您可以使用它std::next_permutation来计算序列的所有排列.它看起来像这样:
std::array<int, 3> data = { 1, 2, 3 };
do {
// use current permutation
} while (std::next_permutation(data.begin(), data.end()));
Run Code Online (Sandbox Code Playgroud)
(我在std::array这个例子中使用了C++ 0x;你也可以array在C++ TR1和Boost中找到容器.这个算法也适用于任何可双向迭代的容器,比如std::vector.)