喜 我使用c ++,我可以找到一个简单的方法从一组包含所有可能组合的数字中获取数组 例如:{1,2,3}
{ {3,1,2},
{1,2,3},
{3,2,1},
{1,3,2},
{2,1,3},
{2,3,1}
};
问题如果我得到5个或更多数字如何制作120个组合
答案 0 :(得分:7)
这些是排列,而不是组合。
您可以使用std::next_permutation
计算序列的所有排列。它看起来像这样:
std::array<int, 3> data = { 1, 2, 3 };
do {
// use current permutation
} while (std::next_permutation(data.begin(), data.end()));
(我在这个例子中使用了来自C ++ 0x的std::array
;你也可以在C ++ TR1和Boost中找到array
容器。这个算法也适用于双向的任何容器可迭代的,如std::vector
。)