如何按字典顺序生成由 k 0'sl 1's 组成的集合的所有排列?我正在寻找伪代码或 C++ 代码。
例子 :

000111
001011
001101
001110
010011
010101
010110
011001
011010
011100
100011
100101
100110
101001
101010
101100
110001
110010
110100
111000

函数 next_perm01 应该像这样操作: next_perm01(permutation_{i})=next_perm01(permutation_{i-1}) 我找到了生成不同元素集的所有排列的唯一方法。

最佳答案

从包含 l 1 的最小数字开始:(1 << l) - 1
然后应用 NextBitPermutation 直到​​达到最高数字,即 lowest << k

关于algorithm - 如何按字典顺序生成由 `k` `0' s` 和 `l` `1' s` 组成的集合的所有排列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15160055/

10-10 06:03