向量上的独特排列

时间:2013-03-01 23:52:03

标签: c++ algorithm stl permutation

我需要在矢量中采用3个元素的所有可能的独特组合。 std::next_permutation有效,但它给了我很多重复。

例如

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

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

1 个答案:

答案 0 :(得分:-1)

首先,你必须弄清楚你可以从 b 对象中选择的 k 对象组合的数量 N

N = b! /(b - k)!

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