我正在实现等边双分区算法的二进制表示,我想知道迭代具有相等 (N/2) 1 和 0 的 N 位的所有组合的最佳方法是什么。我试图找到最快的方法,而不是最简单的编码方法。谢谢。
只是(N choose N/2)
;你要选择哪些位是 0,其余的是 1。
如果你有 10 位,并且想要 5 个 0 和 5 个 1,那么有(10 choose 5) = 252 http://www.google.co.id/search?q=10+choose+5的可能性。
也可以看看:
- 返回 n 中 k 个元素的所有组合的算法 https://stackoverflow.com/questions/127704/algorithm-to-return-all-combinations-of-k-elements-from-n
正如已经指出的,这个数字是二项式系数(n k)
. When k
is n/2
是这个系数最大的时候;我相信您知道存在多种可能性,这就是为什么您需要最快的算法来生成它们。
我不会对这个生成器进行微优化以使其尽可能快,而是首先穷尽所有其他选项:你确定你不能比尝试所有可能性做得更好吗?这种强力解决方案无法扩展。
如果可能的话,尝试找到更好的算法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)