组合数的计算C(n,m)

#include<bits/stdc++.h>
using namespace std;

long long cal(int n,int m) {
    long long answer=1;
    for(int i=1; i<=n; i++) {
        answer*=i;
    }
    for(int i=1; i<=m; i++) {
        answer/=i;
    }
    for(int i=1; i<=n-m; i++) {
        answer/=i;
    }
    return answer;
}

long long cal1(int n,int m) {
    if(n==m||m==0) return 1;
    else {
        return cal1(n-1,m)+cal1(n-1,m-1);
    }
}

long long res[67][67]= {0};
long long cal2(int n,int m) {
    if(n==m||m==0) {
        return 1;
    }
    if(res[n][m]!=0) {
        return res[n][m];
    }
    return res[n][m]=cal2(n-1,m)+cal2(n-1,m-1);
}

void cal3(int n,int m) {
    for(int i=0; i<n; i++) {
        res[i][0]=res[i][i]=1;
    }
    for(int i=2; i<=n; i++) {
        for(int j=1; j<=n/2; j++) {
            res[i][j]=res[i-1][j]+res[i-1][j-1];
            res[i][i-j]=res[i][j];
        }
    }
    return ;
}

long long cal4(int n,int m) {
    long long answer=1;
    for(int i=1; i<=m; i++) {
        answer=answer*(n-m+i)/i;
    }
    return answer;
}

int main() {
    int n,m;
    while(cin>>n>>m) {
        cal3(n,m);
        cout<<res[n][m]<<endl;
        cout<<cal4(n,m)<<endl;
    }
    return 0;
}
全部评论

相关推荐

03-01 21:45
中北大学 Python
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务