我正在实现等边双分区算法的二进制表示,我想知道迭代N个具有相等(N / 2)1和0的所有N组合的最佳方法。我试图找到最快捷的方式,而不是最简单的代码。感谢。
答案 0 :(得分:2)
只是(N choose N/2)
;你选择的是0,其余的是1。
如果您有10位,并且您想要5个零和5个,则有(10 choose 5) = 252
种可能性。
正如已经指出的,这个数字是二项式系数(n k)
。当k
为n/2
时,此系数最大;我相信你知道有很多可能性,这就是为什么你想要最快的算法来生成它们。
不是微观优化这台发电机以使其尽可能快,我首先要用尽所有其他选择:你确定你不能做到比尝试所有可能性更好吗?这种强力解决方案无法扩展。
尽可能尝试找到更好的算法。