从数字中获取所有组合而不重复

发布于 2024-10-11 01:25:53 字数 205 浏览 7 评论 0原文

你好 我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小猫一只 2024-10-18 01:25:53

这些是排列,而不是组合。

您可以使用 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 中找到 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:

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

(I've used std::array from C++0x for this example; you can also find the array container in C++ TR1 and in Boost. This algorithm also works with any container that is bidirectionally iterable, like std::vector.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文