组合数学中杨辉三角与二项式定理以及代码实现

在这里插入图片描述
首先给出杨辉三角(也叫帕斯卡三角形数阵,但我们中国比他早300年)如上图,可以发现三角两边都是1,而中间的数都是上面两个数的和,满足dp[i][j]=dp[i-1][j]+dp[i-1][j-1]这样的递推关系。
然后再来看 ( a + b ) n (a+b)^{n} (a+b)n,将它展开会得到:
( a + b ) 0 = 1 (a+b)^{0}=1 (a+b)0=1
( a + b ) 1 = a + b (a+b)^{1}=a+b (a+b)1=a+b
( a + b ) 2 = a 2 + 2 a b + b 2 (a+b)^{2}=a^{2}+2ab+b^{2} (a+b)2=a2+2ab+b2
( a + b ) 3 = a 3 + 3 a 2 b + 3 a b 2 + b 3 (a+b)^{3}=a^{3}+3a^{2}b^{}+3a^{}b^{2}+b^{3} (a+b)3=a3+3a2b+3ab2+b3
可以发现每项前面的系数和杨辉三角中的数字很吻合。我们再来看二项式定理:
( a + b ) n = ∑ k = 0 n C n k a n − k b k (a+b)^{n}=\sum_{k=0}^{n} C^{k}_{n}a^{n-k}b^{k}\qquad (a+b)n=k=0nCnkankbk
那么二项式定理表示的是什么意义呢,首先这相当于n个(a+b)相乘,那么在每个括号里肯定要选出a或者b来和另外几个括号中的a或者b来相乘,那么有多少种情况呢,我们假设在这n个括号中选择了k个b,那么剩下的就是n-k个a了,情况总数是 C n k C^{k}_{n} Cnk或者 C n n − k C^{n-k}_{n} Cnnk根据组合数的性质,这两个数是相等的。
然后我们就可以证明下面这个等式:
C n m = C n − 1 m − 1 + C n − 1 m C^{m}_{n}=C^{m-1}_{n-1}+C^{m}_{n-1} Cnm=Cn1m1+Cn1m
这个可以这么理解一下:
在n件物品中选出m件物品有多少种可能性?
答案是:从n-1件中选出m-1件的可能性+从n-1件中选出m件的可能性。(第m件物品可选可不选)
这和上面杨辉三角形有非常密切的联系,和其所满足的递推式也异常相似。(证明好长,明白就好了。。)
通过这个等式我们可以推出所有的组合数。

for(int i=1;i<=1000;i++)
    {
        c[i][0]=1;c[i][i]=1;
        for(int j=1;j<i;j++)
            c[i][j]=c[i-1][j]+c[i-1][j-1];
    }

很明显时间复杂度 O ( n 2 ) O(n^{2}) O(n2)
但还有一个可以求非常小范围组合数的等式:
C n k = n − k + 1 k C n k − 1 C^{k}_{n}=\frac{n-k+1}{k}C^{k-1}_{n} Cnk=knk+1Cnk1
下面是证明过程:
C n k = n ! k ! ( n − k ) ! C^{k}_{n}=\frac{n!}{k!(n-k)!} Cnk=k!(nk)!n!
= n ( n − 1 ) ( n − 2 ) . . . . ( n − k + 1 ) k ( k − 1 ) ! =\frac{n(n-1)(n-2)....(n-k+1)}{k(k-1)!} =k(k1)!n(n1)(n2)....(nk+1)
= n − k + 1 k n ! ( k − 1 ) ! ( n − k + 1 ) ! ( 上 下 同 乘 ( n − k + 1 ) ! ) =\frac{n-k+1}{k}\frac{n!}{(k-1)!(n-k+1)!}(上下同乘(n-k+1)!) =knk+1(k1)!(nk+1)!n!((nk+1)!)
= n − k + 1 k C n k − 1 =\frac{n-k+1}{k}C^{k-1}_{n} =knk+1Cnk1

int n;
    cin>>n;
    c[0]=1;
    for(int i=1;i<=n;i++) c[i]=c[i-1]*(n-i+1)/i;\\先乘后除
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值