【问题标题】:unique permutations over the vector [duplicate]向量上的唯一排列[重复]
【发布时间】:2013-02-16 14:41:21
【问题描述】:

我需要在一个向量中获取 3 个元素的所有可能的唯一组合。 std::next_permutation 有效,但它给了我很多重复。

例如

(1, 2, 3, 4, 5) 和 (1, 2, 3, 5, 4)

我取的前 3 个元素是相等的,所以我在做多余的工作。是否有任何有效的方法来迭代独特的组合?

【问题讨论】:

  • 这两个不是“重复”。一个排列包括根据定义的所有元素。如果你想要一些不是真正排列的东西,你必须寻找你想要的正确名称,或者更清楚地描述它:)
  • 我认为他想要N over K combinations 的所有排列。
  • @ipc 嗯,好地方,但我想他可能只想要组合,而不是组合的排列。让我们等他告诉我们他真正想要什么。
  • @ipc:是的。这是正确的。感谢您提及正确的名称 :) 这非常有帮助。
  • 这里是伙计们。 stackoverflow.com/questions/12991758/… 非常感谢。

标签: c++ algorithm stl permutation


【解决方案1】:

首先你必须弄清楚你可以从 b 个对象中挑选出的 k 个对象组合的数量 N 个。

N = b! / (b - k)!

接下来,您通过迭代初始列表并用所有这些组合填充总共 N 个容器来找到所有组合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2019-06-24
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多