从数字中获取所有组合而不重复
你好 我使用 c++ 工作,我能找到从一组包含所有可能组合的数字中获取数组的简单方法吗? 例如:{1,2,3}
{ {3,1,2},
{1,2,3},
{3,2,1},
{1,3,2},
{2,1,3},
{2,3,1}
};
如果我得到 5 个或更多数字,问题是如何组成 120 个组合
hi
I work with c++ ,can I find easy way for getting an array from a set of numbers containing all possible combinations between
ex : {1,2,3}
{ {3,1,2},
{1,2,3},
{3,2,1},
{1,3,2},
{2,1,3},
{2,3,1}
};
the problem if i get 5 or more numbers how to make there's 120 combination
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这些是排列,而不是组合。
您可以使用
std::next_permutation
来计算所有序列的排列。它看起来像这样:(在本示例中,我使用了 C++0x 中的
std::array
;您还可以在 C++ TR1 中找到array
容器,在 Boost 中,该算法也适用于任何可双向迭代的容器,例如std::vector
。)Those are permutations, not combinations.
You can use
std::next_permutation
to compute all of the permutations of a sequence. It will look something like this:(I've used
std::array
from C++0x for this example; you can also find thearray
container in C++ TR1 and in Boost. This algorithm also works with any container that is bidirectionally iterable, likestd::vector
.)