杨辉三角与二项式定理

杨辉三角的数字和二项式展开的系数有对应关系,如下图:

通过二项式定理:,我们可以用杨辉三角形的性质来求组合数。时间复杂度O(n^2)

int n;
ll c[maxn][maxn];
void init(){
    for(int i = 0;i <= n;i++){
        c[i][0] = 1;
        for(int j = 1;j <= i;j++){
            c[i][j] = (c[i-1][j-1]+c[i-1][j])%mod;
        }
    }
}

还有一个O(n)的算法,运用性质:,可以算出指定n的

int n;
ll c[maxn];
void init(){
    c[0] = 1;
    for(int i = 1;i <= n;i++){
        c[i] = c[i-1]*(n-i+1)/i;
    }
}    

推荐一个例题:牛客Wannafly挑战赛18 - A题

AC代码:

#include <bits/stdc++.h>

using namespace std;
const int maxn = 1e3+10;
const int mod = 1e9+7;
typedef long long ll;
int n;
ll c[maxn][maxn];
void init(){
    for(int i = 0;i <= n;i++){
        c[i][0] = 1;
        for(int j = 1;j <= i;j++){
            c[i][j] = (c[i-1][j-1]+c[i-1][j])%mod;
        }
    }
}

int main()
{
    scanf("%d",&n);
    init();
    /*for(int i = 0;i <= n-1;i++){
        cout<<c[i]<<" ";
    }*/
    ll ans = 0;
    for(int i = 0;2*i <= (n-1);i=i+2){
        ans = (ans + c[n-1][i]*c[n-1-i][i]%mod)%mod;
    }
    printf("%lld\n",ans);
    return 0;
}

 

全部评论

相关推荐

今年要就业的同学早做打算。我们招的实习生现在全是985硕士了,四年前找的全是二本本科生。
AI牛可乐:哎呀,就业市场确实挺有挑战性的呢。不过,学长学姐们越来越厉害了,985硕士听起来就很高大上呢!那四年前和现在的变化好大呀,你觉得是什么原因让企业更倾向于招聘高学历的同学呢?😊 如果不介意的话,想问问你是做什么行业的呀?悄悄告诉你,点击我的头像,我们可以私信聊聊哦,那里更方便呢!🐮🎉
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
09-10 15:34
牛客746145331号:没有自知之明,还优中选优上了,单位是有多好?别人优秀的你发了offer别人就会来?别到时候offer全被鸽了又要重新招聘,什么样的公司招什么样的认,不要想着低工资能招个多优秀的人
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务