设为首页 加入收藏

TOP

【模板】计算组合数
2019-09-17 19:04:07 】 浏览:26
Tags:模板 计算 组合

先贴上一张组合数的基本公式吧,在这里我们暂且规定n为下标,m为上标(n≥m)

①普通方法计算组合数

int com(int n,int m)
{
    int s=1;
    for(int i=1;i<=m;i++)
        s=s*(n+1-i)/i;
    return s;
}

②运用对数函数计算组合数(可以用于处理较大的数值)

(1) 在c语言中,log函数也就是我们通常所说的ln函数,即以e为底的对数函数

(2) s1作为分子,从m+1累乘至n;s2作为分母,从1累乘至n-m;

(3) 最后再用exp函数把经过处理的组合数还原出来

double lncom(int n,int m)
{
    double s1=0,s2=0,i;
    if(m<n/2.0)
        m=n-m;
    for(i=m+1;i<=n;i++)
        s1=s1+log(i);
    for(i=2;i<=n-m;i++)
        s2=s2+log(i);
    return s1-s2;             
}
double com(int n,int m)
{
    if(n<m)
        return 0;
    return exp(lncom(n,m));
}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇中小研发团队架构实践之统一应用.. 下一篇说一说几种常用的登录认证方式,..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目