【发布时间】:2014-04-03 14:04:54
【问题描述】:
受到一个模棱两可的问题的启发,我感到挑战解决更难的解释,如下所示:
如何最有效地计算所有可能的整数值(32 位值)恰好包含 n 个零(0 位)?例如,给定 n = 7,正好包含 7 个零的不同整数值的数量为:
32*31*30*29*28*27*26 / (1*2*3*4*5*6*7) = 3.365.856
正好有 7 个零的整数值示例如下:
11111111000000011111111111111111
如果您想自己解决问题,请避免阅读我的答案。否则,请评估我的答案、改进它或发布更好、更有效的答案。
【问题讨论】:
-
这不是关于集合的幂集。
-
您可能会发现这个 C++ 解决方案很有用:stackoverflow.com/questions/14713584/…
-
我更正了标题。我在寻找所有排列而不是幂集。我的错,对不起。
-
实际上,您正在尝试枚举所有combinations n 个零和 32-n 个一,而不是所有permutations 的位序列。也就是说,您的描述与您的术语不符。
标签: java performance algorithm processing-efficiency