排列与组合的应用.docx
- 文档编号:653159
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:31
- 大小:80.20KB
排列与组合的应用.docx
《排列与组合的应用.docx》由会员分享,可在线阅读,更多相关《排列与组合的应用.docx(31页珍藏版)》请在冰豆网上搜索。
排列与组合的应用
排列与组合的应用
四川成都市大弯中学 李植武
摘要 在信息学奥林匹克竞赛中,多次出现了排列与组合的竞赛题目。
本文介绍了排列与组合的概念、公式,重点讲解了排列与组合的生成算法,最后通过几个竞赛题目的解决,体现了排列与组合在信息学竞赛中的应用。
关键词 排列 组合 生成 应用
说明:
本文中的pascal程序在Lazarusv0.9.22beta下调试完成,c程序dev-c++4.9.9.2下调试完成,所有程序通过相应数据测试。
一、排列与组合
1.排列及公式
(1)线排列
一般地,从n个不同元素中,取出m(m≤n)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个线排列;从n个不同元素中取出m(m≤n)个元素的所有线排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号
表示。
规定0!
=1。
(2)圆排列
从n个不同元素中取出m个元素按照某种次序(如逆时针)排成一个圆圈,称这样的排列为圆排列,圆排列个数为
。
因为从n个不同元素中取出m个元素排成一列的个数是
。
不妨设一个排列是:
a1a2…am。
而这个排列与排列a2…ama1,a3…ama1a2,…,ama1a2…am-1,是一样的圆排列,共有m个,所以一个圆排列对应m个普通排列,所以有圆排列数
。
(3)无限重排列
从n个不同元素中取r个元素按次序排列,每个元素可以取无限次,这样的排列称为无限重排列。
显然,其排列数为nr。
(4)有限重排列
从k个不同元素{a1a2…ak}中取n个元素按次序排列,元素ai可以取ri次,r1+r2+...+rk=r,这样的排列称为有限重排列。
实际上,这个问题与下面的问题等价:
把r(r1+r2+...+rk=r)只彩色球放到n个编号不同的盒子中去的方法数
。
如r=n,则排列数有
。
(5)错排问题
一个排列使得所有的元素都不在原来的位置上,则称这个排列为错排。
例如有3个元素,原来位置为:
123,它的错排有两种312和231。
用f[n]表示n个元素的错排数,利用容斥原理可以推出(过程略):
f[n]=
。
主要讲一下递推式。
考虑任意一个满足条件的排列a1,a2,a3,…,an,显然有an≠n,不妨设n=ai,考虑书i的位置,它有两种情况:
1)i=an
2)i≠an
对于1),数i在位置n,而数n在位置i上,则是n-2的错排问题,这种情况的方法数为f[n-2]。
对于2),可以把位置n看成位置i(位置i上不放数i,而此时位置n也不放数i,所以i和n可以等同看待),则问题成了n-1个数的错排问题了。
由1)与2)及i有n-1种取值,所以有f[n]=(n-1)(f[n-2]+f[n-1])。
:
2.组合及公式
(1)非重组合
一般地,从n个不同元素中,取出m(m≤n)个元素,不允许元素重复,不考虑元素次序,叫做从n个不同元素中取出m个元素的一个非重组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数.用符号
表示.
组合数的两个性质:
(2)重组合
从n个不同元素中,取出r个允许重复的元素而不考虑其次序时,称为从n个不同元素中取r个允许重复的组合,简称重组合。
其组合数为
.
这个问题,可以看作用r个相同的标记去标明这n个不同的对象,而每一个对象可以被标上多个标记,一个对象上最多r个标记。
设n个元素为{a1a2…an},记ai被记了k次为ai(k),同一个元素标记不同次数,认为是不同的元素,那么第1次标记有n种方法,有n+1个元素{a1a2…anai(k)},第2次标记就有n+1种方法,有n+2个元素,……第r次标记有n+r-1种方法,有n-r个元素,而标记顺序对结果没有影响,所以有
种方法,即
。
二、排列与组合生成算法
1.排列生成
有N本不同的书摆在书架上,设其编号分别为1,2,3,......,N,编程求解这N本书的不同摆放方案和摆放方案总数。
程序名:
pailie.pas/c/cpp 输入文件:
pailie.in 输出文件:
pailie.out
输入文件的格式为:
仅为一个数N
输出文件的格式为:
依次为每一行为一种方案,每个数之间用一个空格隔开,最后一行为方案数
样例
input
2
output
12
21
2
数据规模 1= 说明,排列方案字典顺序小的在前。 分析: 本题要求出所有具体方案,所以用不着排列公式来计算方案数。 生成排列方案的过程中可以统计出方案总数。 (1)按字典序生成排列法(根据上一个排列产生下一个排列)。 该算法的N—S流程图如图1。 Pascal版参考程序: programpailie; var s,j,t,i,k,n: Longint; a: array[1..10]oflongint; functionfi: longint; var i: longint; begin i: =n; while(i>1)and(a[i-1]>a[i])dodec(i); fi: =i; end; functionfk: longint; var k: longint; begin k: =n;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 排列 组合 应用