组合数C(n,m)的求法总结,卢卡斯定理
来源:互联网 发布:网络征信查询黑名单 编辑:程序博客网 时间:2024/05/01 05:33
组合数C(n,k)的求法总结
与组合数有关的两个最重要内容是杨辉三角和二项式定理。
杨辉三角前10行如下所示:
另一方面,将(a+b)^n展开,系数正好和杨辉三角一致。
一般有(a+b)^n=C(n,0)a^n+C(n,1)a^(n-1)b+...+C(n,n)b^n。
给定n,如何求出(a+b)^n所有项的系数呢?
方法一,递推,利用杨辉三角的性质,当前数等于上方两个数的和,表现在组合数上就是C(n,m)=C(n,m-1)+C(n-1,m-1)。
代码如下:
memset(C,0,sizeof(C));for (int i = 0; i <= n; ++i) { C[i][0] = 1; for (int j = 1; j <= i; ++j) { C[i][j] = C[i][j - 1] + C[i - 1][j - 1]; }}但是复杂度是n^2。
方法二,利用等式C(n,k)=(n-k+1)/k*C(n,k-1)。从C(n,0)=1开始递推。
代码:
C[0] = 1;for (int i = 1; i <= n; ++i) { C[i] = (n-i+1)*C[i-1]/i;}注意应该先除后乘,因为C[i-1]/i可能不是整数。但可能溢出。
上边等式的意义不是很明显,但很容易用组合数公式C(n,k)=n!/(k!(n-k)!)证明。
方法三,卢卡斯定理
待写
参考:http://baike.baidu.com/view/7804.htm
0 0
- 组合数C(n,m)的求法总结,卢卡斯定理
- 组合数C(n,m)的计算
- 组合数C(n,m)
- Lucas定理与大组合数的取模的求法总结
- Lucas定理与大组合数的取模的求法总结
- Lucas定理与大组合数的取模的求法总结
- Lucas定理与大组合数的取模的求法总结
- 【HDU 4349】【组合数结论 LUCAS定理推广】 Xiao Ming's Hope【C[n][m]为奇数的个数】t
- 组合数算法 C(n,m)(n>=m)
- 计算组合数C(m,n)
- 变态组合数C(n,m)求解
- 求组合数c(n,m)
- 计算组合数C(n,m)
- codeforces 630~~【组合数 C(n,m)】
- 求组合数(c(m,n))
- 求组合数C(n , m)
- 大组合数(C(n,m))
- 组合C(m,n)
- Oracle 4天实训笔记
- VC++调用UpdateLayeredWindow实现半透明窗体【转】
- 初识三层架构
- qt交叉编译
- NGUI如何进行自适应UI重叠问题解决方案
- 组合数C(n,m)的求法总结,卢卡斯定理
- 解决方法:System.UnauthorizedAccessException: 拒绝访问。 (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED)
- 2015年工作中遇到的问题:31-40
- HDU2036 改革春风吹满地
- 校园网web登录的shell脚本
- Unity3D 物品系统结合MVC框架设计之装备[1]
- Android测试/开发环境搭建
- USACO2.1.2 Ordered Fractions (frac1)
- 基于MONO事件派发机制之SendMessage