当我求解Euler project problem #15时,我意识到可以通过从头到尾的路线组合方式来解决。生成的路由始终具有相同大小的正确选择或向下选择(或0和1),正确的路由始终具有相同的数量0和1。
因此,在二进制字中具有相同数量0和1的数字为
C(2,1)表示1位长度
C(4,2)用于2位“”
C(6,3)用于4位“”
...
现在是我的问题:
是否有一个函数可以解决数字是否具有相同的0和1数量?
我猜想它更像是一个逻辑函数,我不想迭代所有数字或使用正则表达式(这比迭代更糟)。
**另一个问题是关于这种“平衡”值(value)的增长和空间?
最佳答案
作为Paul R回答的后续措施,是,它是中央二项式系数的公式的简化形式,请参见http://mathworld.wolfram.com/CentralBinomialCoefficient.html
p = n!/(((n/2)!)²= 2n/2(n-1)!!/(n/2)!
k!是“双阶乘”,这意味着您在计算时会跳过其他所有数字:k! = k *(k-2)*(k-4)* ...(只要因子为正)。
为了进行计算,许多数字将被抵消(当同时计算分子和分母时,可以使用gcd进行计算)
关于algorithm - 相同数量的0和1的二进制数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3522417/