1
k组合的快速索引
我正在重新审视我前一段时间正在研究的一个老问题。 典型的场景是“在8位整数内设置3位”,即00000111。 通过嵌套循环可以轻松地(按顺序)生成具有3个置位的所有唯一组合。我感兴趣的是映射索引<->组合,即“ 00001011”将是第二个组合(或从零开始的索引中的值“ 1”)。 到目前为止,我浏览了所有组合并将它们存储在表中,从而使查找索引->对话成为O(1)操作。另一个方向是对分搜索的O(ln(n))。 但是,不利的一面是,如果我们增加域的范围,这显然会占用大量内存,直到不可行的程度。 计算第n个组合或给定组合的索引的简单方法是什么?组合顺序会很好,但不是强制性的。