美文网首页C/C++学习笔记
C++ 计算排列数和组合数

C++ 计算排列数和组合数

作者: 零岁的我 | 来源:发表于2020-04-27 17:12 被阅读0次

    #include<iostream>
    using namespace std;
    
    //计算阶乘
    /*
    注意:0!= 1
    */
    int factorial(int n)
    {
        int fc=1;
        for(int i=1;i<=n;++i) fc *= i;
        return fc;
    }
    
    //计算组合数
    /*从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做n个不同元素中取出m个元素的组合数。用符号c(n,m) 表示。
    组合数公式:c(n,m)=n!/(m! * (n-m)!)
    性质:c(n,m) = c(n,m-n)
    递推公式:c(n,m) = c(n-1,m-1) + c(n-1,m)
    */
    int combo(int n,int m)
    {
        int com=factorial(n)/(factorial(m)*factorial(n-m));
        return com;
    }
    
    //计算排列数
    /*从n个不同的元素中任取m(m≤n)个元素的所有排列的个数,叫做从n个不同的元素中取出m(m≤n)个元素的排列数。
    排列与元素的顺序有关,组合与顺序无关。
    排列数公式:A(n,m) = n*(n-1)*...*(n-m+1)=n!/(n-m)!
    排列数公式中总共有m项乘积。
    */
    int permutation(int n,int m)
    {
        int perm=factorial(n)/factorial(n-m);
        return perm;
    }
    
    int main(int argc,char **argv)
    {
        int m,n;
        while(cin>>n>>m){
            cout<<"c(n,m)= "<<combo(n,m)<<endl;
            cout<<"A(n,m)= "<<permutation(n,m)<<endl;
        }
        return 0;
    }
    
    结果截图

    相关文章

      网友评论

        本文标题:C++ 计算排列数和组合数

        本文链接:https://www.haomeiwen.com/subject/icluwhtx.html