如何按字典顺序生成由 k
0's
和 l
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/