向量上的唯一排列[重复]

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 个容器来找到所有组合。

【讨论】:

以上是关于向量上的唯一排列[重复]的主要内容,如果未能解决你的问题,请参考以下文章

根据一个的排列对三个向量进行排序,并带有重复项。

如何使用“唯一”从向量中删除重复项?

从具有重复元素的向量生成所有唯一组合

有效地找到单词的所有可能的唯一排列[重复]

R:如何在不使用循环的情况下按唯一向量顺序查找所有重复向量值的索引?

c_cpp 给定可能包含重复项的数字集合,返回所有可能的唯一排列。例如,[1,1,2]有以下内容