【发布时间】:2017-08-02 04:54:59
【问题描述】:
我正在寻找一种算法,该算法将返回包含特定数量的真假值的布尔向量的第 k 个排列。这样做不会像使用 c++ next_permutation(...) 那样生成所有先前的排列。 例如,我有 00011 并且想要第 5 个字典排列 (01010)。
有没有办法做到这一点?
包含 2x true 和 3x false 的完整排列列表:
- 00011
- 00101
- 00110
- 01001
- 01010
- 01100
- 10001
- 10010
- 10100
- 11000
我用谷歌搜索了很多不同的算法来生成排列,但没有找到具有特定重复元素数量的第 k 个排列。
感谢您的任何建议:)
【问题讨论】:
-
您正在寻找未排序的排列,这里接受的答案应该适合您:stackoverflow.com/questions/22642151/…
-
向量有多长?您的运行时限制是什么?
标签: c++ algorithm boolean permutation repeat