【发布时间】:2017-09-03 13:07:21
【问题描述】:
是否有任何有效的代码可以生成具有 n 位二进制表示且恰好 r 位设置为 1 的数字?
这也是生成掩码以查找集合的 NcR 组合的好策略吗?
我考虑过生成所有 2^n 个数字并计算它们的位数,但计数位数似乎是 O(nlogn)。
【问题讨论】:
-
HAKMEM 175 描述了查找具有相同位数集的下一个更高整数的方法,请检查相关answer。
-
如果
n是(小于)机器字的大小,您可以在恒定时间内计算 1 - 但无论如何您都不应该使用这种方法,2^n 要大得多比实际的组合数。
标签: algorithm combinations bitmask