评估“价值”最有效的方法是什么?n
choose k
“?
我认为的蛮力方法是找到n! / k! / (n-k)!
通过单独计算每个阶乘。
更好的策略可能是根据这个使用DP递归公式 https://i.stack.imgur.com/Kq3OH.png, nCk == (n-1)C(k-1) + (n-1)C(k)
。有没有其他更好的评估方法n
choose k
在复杂性和避免溢出风险方面?
这是我的版本,它纯粹以整数工作(除以 k 总是产生整数商)并且速度很快,时间复杂度为 O(k):
function choose(n, k)
if k == 0 return 1
return (n * choose(n - 1, k - 1)) / k
我以递归方式编写它,因为它是如此简单和漂亮,但如果您愿意,您可以将其转换为迭代解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)