排列组合数C(m,n)的O(n)算法
来源:互联网 发布:怎么加雷盾网络验证 编辑:程序博客网 时间:2024/05/02 01:27
刚开始,想用它的定义来做
C(m,n) = m!/(m-n!*n!)
但是发现如果用int的话,阶乘的运算到13就爆int了,所以算这个不要写一个阶乘函数然后让他们运算,而是应该先化简后再来计算。
化简之后我发现其实算C(m,n)只要计算min(n,m-n)次就可以了
代码如下
private static int c(int m,int n){//temp 为答案 double temp = 1;//保证n>=m-n if(n<m-n) return c(m,m-n); for(int i=0;i<m-n;++i){ temp*=n+i+1; temp/=i+1; } return (int)temp; }
0 0
- 排列组合数C(m,n)的O(n)算法
- 排列组合 C(n,m)
- 排列组合 C(n,m)
- 数学排列组合算法 P(N,M) C(N,M)
- 算法:排列组合之C(N,M)
- c# C(m,n) 排列组合算法
- 组合数算法 C(n,m)(n>=m)
- 约瑟夫问题,从o(n*m)到o(n)乃至o(m)的算法复杂度进阶
- java排列组合算法(M选N)
- O(n)预处理C(n,m)
- 组合数C(n,m)的计算
- 组合数C(n,m)
- [算法] 求排列组合: 从n个数中任选m个数组成一个新数
- 求排列组合数C(n,r)
- 约瑟夫环O(N)和O(M*N)算法详解
- Tarjan O(n+m) 算法【转】
- KMP(字符串匹配)算法 O(m+n)
- 排列数算法A(n,m)(n>=m)
- 检测网络状态
- 关于Mongodb的全面总结,学习mongodb的人,可以从这里开始!
- HomeKit 开发指南(中文版)
- 静态变量和全局变量的区别
- C语言中memset参数
- 排列组合数C(m,n)的O(n)算法
- 关于static和final
- 二分查找
- java故事(final与static认识一)
- Storm常见模式------TimeCacheMap
- 黑马程序员---java基础--多线程
- Java基础-05
- Make an interactive website 学习笔记
- 几种常见取石子模型