C++基础数论————排列组合

本文介绍了排列组合的基础概念,包括排列与组合的定义、计算组合数的两种方法,以及递推公式。此外,讲解了杨辉三角、二项式定理、Lucas定理,并探讨了组合数的奇偶性。通过实例展示了如何运用这些理论解决问题,如将14本书按特定数量分堆。最后,提到了与数论相关的其他主题。
摘要由CSDN通过智能技术生成

排列组合的定义:

排列就是从n个数中找出m个进行排列C_{14}^{1}*C_{13}^{2}*C_{11}^{2}*C_{9}^{3},共有多少种方案?

这一定要考虑顺序。

公式就是:

A_{n}^{m}=\frac{n!}{(n-m)!}

而组合就从从n个数中找出m个进行组合,共有多少种方案?

这一定不要考虑顺序。

公式就是:

C_{n}^{m}=\frac{n!}{m!(n-m)!}

现在,我们来看一看它的性质:

而我们该如何计算组合数呢?

计算组合数:

这一共有2种方法。

1、根据定义直接暴力求出组合数,但是其时间复杂度较长而且有溢出的风险,所以不推荐使用。

2、根据我们可以通过递推的方法来解决。代码如下:

递归

int dg( int x , int y )
{
    if( y==0 )
        return 1;
    int p = dg( x - 1 ,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值