组合数的几种求法

记从n中选出m个的组合数记为Cn,m,求Cn,m:

方法一:蛮力求解,Cn,m=n!/((n-m)!*m!)

方法二:Cn,m=Cn-1,m+Cn-1,m-1,这样就可以递归求解

方法三:Cn,m=n!/((n-m)!*m!),两边同时取对数,

lnCn,m=lnn!-ln(n-m)!-lnm!=sum(lni1) -sum(lni2)-sum(lni3) ,1<=i1<=n, 1<=i2<=n-m, 1<=i3<=m,

可以通过消去重复计算来优化,最后再通过指数运算求得最后结果 但是这种方法存在精度问题。

参见http://www.e800.com.cn/articles/2010/0402/459660.shtml

组合数求解方法参见:http://www.oschina.net/code/snippet_203297_11313


你可能感兴趣的:(排列组合,组合数,组合数求法)