ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:80.20KB ,
资源ID:653159      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/653159.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(排列与组合的应用.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

排列与组合的应用.docx

1、排列与组合的应用排列与组合的应用四川成都市大弯中学李植武摘要在信息学奥林匹克竞赛中,多次出现了排列与组合的竞赛题目。本文介绍了排列与组合的概念、公式,重点讲解了排列与组合的生成算法,最后通过几个竞赛题目的解决,体现了排列与组合在信息学竞赛中的应用。关键词排列组合生成应用说明:本文中的pascal程序在Lazarus v0.9.22 beta下调试完成,c程序dev-c+ 4.9.9.2下调试完成,所有程序通过相应数据测试。一、排列与组合 1排列及公式 (1)线排列一般地,从n个不同元素中,取出m(mn)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个线排列;从n个不同元素中

2、取出m(mn)个元素的所有线排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号表示。 规定 0!1。(2)圆排列从n个不同元素中取出m个元素按照某种次序(如逆时针)排成一个圆圈,称这样的排列为圆排列,圆排列个数为。因为从n个不同元素中取出m个元素排成一列的个数是。不妨设一个排列是:a1a2am。而这个排列与排列a2ama1, a3ama1a2, ama1a2am-1,是一样的圆排列,共有m个,所以一个圆排列对应m个普通排列,所以有圆排列数。(3)无限重排列从n个不同元素中取r个元素按次序排列,每个元素可以取无限次,这样的排列称为无限重排列。显然,其排列数为nr。(4)有限重排列从k个

3、不同元素 a1a2ak 中取n个元素按次序排列,元素ai可以取ri次,r1+r2+.+rk =r,这样的排列称为有限重排列。实际上,这个问题与下面的问题等价:把r(r1+r2+.+rk =r)只彩色球放到n个编号不同的盒子中去的方法数。如r=n,则排列数有。(5)错排问题一个排列使得所有的元素都不在原来的位置上,则称这个排列为错排。例如有3个元素,原来位置为:1 2 3,它的错排有两种3 1 2和2 3 1。用fn表示n个元素的错排数,利用容斥原理可以推出(过程略):fn=。主要讲一下递推式。考虑任意一个满足条件的排列a1,a2,a3,an,显然有ann,不妨设n=ai,考虑书i的位置,它有两

4、种情况:1)i=an2)ian 对于1),数i在位置n,而数n在位置i上,则是n-2的错排问题,这种情况的方法数为fn-2。对于),可以把位置n看成位置i(位置i上不放数i,而此时位置n也不放数i,所以i和n可以等同看待),则问题成了n-1个数的错排问题了。由1)与2)及i有n-1种取值,所以有fn=(n-1)(fn-2+fn-1)。:2组合及公式 (1)非重组合一般地,从n个不同元素中,取出m(mn)个元素,不允许元素重复,不考虑元素次序,叫做从n个不同元素中取出m个元素的一个非重组合;从n个不同元素中取出m(mn)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数.用符号表示

5、. 组合数的两个性质:(2)重组合从n个不同元素中,取出r个允许重复的元素而不考虑其次序时,称为从n个不同元素中取r个允许重复的组合,简称重组合。其组合数为. 这个问题,可以看作用r个相同的标记去标明这n个不同的对象,而每一个对象可以被标上多个标记,一个对象上最多r个标记。设n个元素为 a1a2an ,记ai被记了k次为ai(k),同一个元素标记不同次数,认为是不同的元素,那么第1次标记有n种方法,有n+1个元素 a1a2an ai(k),第2次标记就有n+1种方法,有n+2个元素,第r次标记有n+r-1种方法,有n-r个元素,而标记顺序对结果没有影响,所以有种方法,即。二、排列与组合生成算法

6、 1.排列生成 有N本不同的书摆在书架上,设其编号分别为,.,编程求解这本书的不同摆放方案和摆放方案总数。程序名:pailie.pas/c/cpp输入文件:pailie.in输出文件:pailie.out输入文件的格式为:仅为一个数N输出文件的格式为:依次为每一行为一种方案,每个数之间用一个空格隔开,最后一行为方案数样例input2output1 22 12数据规模1=N1)and(ai-1ai) do dec(i); fi:=i; end; function fk:longint; var k:longint; begin k:=n; while (k1)and(ak1 do begin k

7、:=fk; t:=ai-1; ai-1:=ak; ak:=t; for j:=i to (n+i)div 2 do begin t:=an+i-j; an+i-j:=aj; aj:=t; end; print; i:=fi; end; writeln(s); close(input); close(output);end.()回溯算法产生排列用pi记录一个排列的第i个数, 伪代码描述的产生排列的第i个数的方法Procedure try(i) Begin If in then begin 输出排列;返回end;/产生了一个完整排列,输出 For j=1 to n do If not aj the

8、n / j这个数没有用 Begin Pi=j; Aj=true;/占位 Try(i+1);/搜索下一个数 End; End;Pascal版参考程序:program pailie;var p:array1.10 of longint; a:array1.10 of boolean; n,tot,i:longint; fil:text;procedure print; var i:longint; begin inc(tot); for i:=1 to n do write(fil,pi, ); writeln(fil); end;procedure tryy(i:longint); var j:

9、longint; begin if in then begin print;exit end; for j:=1 to n do if not aj then begin aj:=true; pi:=j; tryy(i+1); aj:=false; end; end;begin assign(fil,pailie.in); reset(fil); readln(fil,n); close(fil); assign(fil,pailie.out); rewrite(fil); fillchar(a,sizeof(a),false); tot:=0; tryy(1); writeln(fil,to

10、t); close(fil);end.C语言版参考程序:# include long a15,n,s;bool f15;FILE *fp;void shu(long a) long i; for (i=1;i=n;i+) fprintf(fp,%d ,ai); fprintf(fp,n); s+; void pai(long i) long j,k; if (i=n+1) shu(a); return; for (j=1;j=n;j+) if (fj) fj=false; ai=j; pai(i+1); fj=true; int main() long i,j,k,m; fp=fopen(pa

11、ilie.in,r); fscanf(fp,%d,&n); fp=fopen(pailie.out,w); for (i=1;i=n;i+) fi=true; s=0; pai(1); fprintf(fp,%dn,s); fclose(fp); return 0;2.组合生成有N本不同的书摆在书架上,设其编号分别为,.,现要从其中取出本书,编程求解这本书的不同组合方案和方案总数。程序名:zuhe.pas/c/cpp输入文件:zuhe.in输出文件:zuhe.out输入文件的格式为:仅为一行,两个数N和,之间用一个空格隔开输出文件的格式为:依次为每一行为一种组合,每个数之间用一个空格隔开,最后

12、一行为组合方案数样例input3 2output1 21 32 33数据规模1=N,R=30说明,每一种组合,从小到大排列;组合方案字典顺序小的在前分析:本题要求出所有具体方案,所以用不着组合公式来计算方案数。生成组合方案的过程中可以统计出方案总数。(1) 根据上一个组合产生下一个组合。该算法的流程图如图2。Pascal版参考程序:program zuhe;var c:array1.30 of longint; n,r,i,j,tot:longint; fil:text;procedure print; var i:longint; begin inc(tot); for i:=1 to r do write(fil,ci, ); writeln(fil); end;function findi:longint; var i:longint; begin i:=r; while (

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1