计数原理与排列组合
计数原理
例题1:
用一个大写的英文字母或 一个阿拉伯数字给教室里的一个座位编号,总共能编出多少种不同的号码?
或:
- 有
无 - 有
无 - 有
有
且:
- 有
有
非:
- 无
解:英文字母共有26个,阿拉伯数字共有10个,总共能编出26+10=36种不同的号码。
分类加法计数原理:完成一件事,有
例题2:
用前六个伯数字给教室里的一个座位编号,总共能编出多少种不同的号码?
解:由于前六个英文字母中的任意一个都能与九个数字中的任意一个组成一个号码,而且他们互不相同,一共能编出
分步乘法计数原理:做
例题3:
要从甲、乙、丙
解:
分两步:
第
第
甲 -> 乙、丙
(甲,乙) (甲,丙)
乙 -> 丙
(乙,丙)
(甲,乙)
甲、乙
乙、甲
(甲,丙)
甲、丙
丙、甲
(乙,丙)
乙、丙
丙、乙
题外话,数集:
排列与组合
例题4:
从甲、乙、丙
解:
(甲,乙)
甲、乙
乙、甲
(甲,丙)
甲、丙
丙、甲
(乙,丙)
乙、丙
丙、乙
排列:一般地,从
排列数:我们把从
不同排列的个数,叫做叫做从
填空可以分为
第
第
第
第
根据分步乘法计数原理,
得到公式:
其中
特别的,我们把
也就是说,将
通过课本上的例题我们发现
观察发现:
所以,排列数公式还可以写成
组合
例题5
从甲、乙、丙
解:列举出所有可能的选法:甲乙 甲丙 乙丙。
一共
一般的,从
赵老师口诀:
相同即无序,无序就组合。
不同即有序,有序即排列。
类比排列数的概念,我们引进组合数概念:
从
我们发现求从
- 从这
个不同元素中取出 个元素,共有 种不同的取法; - 将取出的
个元素做全排列,共有 种不同的排法。 根据分步乘法计数原理, 有
所以求得:
这里
因为
所以上面的组合数公式还可以写成:
另外,我们规定
OI中的组合数:
求组合数的递推代码:
#include<bits/stdc++.h>
using namespace std;
int C[1005][1005];
//C(i,j) 0<=i<=n,0<=j<=i 要求这个范围的组合数
signed main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<=n;i++){
C[i][0]=C[i][i]=1;
for(int j=1;j<i;j++)
C[i][j]=C[i-1][j-1]+C[i-1][j];
}
cout<<C[n][m];
return 0;
}
组合数的性质:
- 性质1:
一般地,从
- 性质2:
证明:
- 性质3
杨辉三角
观察杨辉三角的相邻两行,可以发现,三角形的两个腰上的数都是
证明:
二项式定理
二项式定理研究的是
我们在学习初中奥数的时候背过以下公式:
在初中我们学习了完全平方公式,推导过程如下:
我们发现,在展开的过程中得到多项式(括号)相乘时,我们运用了乘法分配律,也就是前面括号的每一项乘遍了后面括号的每一项,可以利用计数原理,写成组合数的形式:
思考至少为
从上述对具体问题的分析得到启发,对于任意正整数
上述公式叫做 二项式定理,右边的多项式叫做
在二项式定理中,若设
处理了一些关于二项式定理的习题,后面补。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)