向量上的唯一排列[重复]
Posted
技术标签:
【中文标题】向量上的唯一排列[重复]【英文标题】: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:是的。这是正确的。感谢您提及正确的名称 :) 这非常有帮助。 这里是伙计们。 ***.com/questions/12991758/… 非常感谢。 【参考方案1】:首先你必须弄清楚你可以从 b 个对象中挑选出的 k 个对象组合的数量 N 个。
N = b! / (b - k)!
接下来,您通过迭代初始列表并用所有这些组合填充总共 N 个容器来找到所有组合。
【讨论】:
以上是关于向量上的唯一排列[重复]的主要内容,如果未能解决你的问题,请参考以下文章