问题与标题中相同。 我已经完成了两种方法。一个很简单。从生成长度为n,等于1和0的二进制数
2^{N - 1}
到
2^N
并为每位掩码检查 生成所有位掩码,如果有相同量的1和0,如果是的话,工作。 而这就是问题所在,因为我必须在这些位掩码上工作,不仅要数它们。
我来到第二种方法,它运行在O(2^{n/2})时间,但似乎它不会生成所有位掩码,我不知道为什么。
第二种方法是这样的: 生成所有位掩码从0到2^{N/2},并具有有效位掩码(称为B)我必须做这样的事情:B#一B
哪里〜是否定的。
因此,例如,我有N = 6,所以我要去用3.
长度。例如,以产生位屏蔽我有B = 101,所以〜乙将010 和最终位掩码将是正如我们所看到的,101010具有相同数量的1和0。
这种方法是好还是我实施的东西不好?也许还有一些有趣的方法存在? 感谢
克里斯
嘿,感谢它,但它不工作得那么好,我的意思是... 对于参数3,3,0 它在35号之前产生不好的位掩码,之后它提供了很好的数字。我用我的蛮力来检查它 – Spinach 2011-12-16 15:25:47