网站大量收购独家精品文档,联系QQ:2885784924

排列组合与在NOIP中应用.docVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
排列组合及其在NOIP中的应用    这些知识,在信息学分区联赛中有着极其广泛的应用。初赛和复赛有所不同:在初赛中,主要考查大家对排列、组合的理解,要求大家能够正确的使用排列数的计算公式和组合数的计算公式;复赛则要求大家能够比较深入的领会排列的产生过程和组合的产生过程。 1:(第八届全国青少年信息学奥林匹克分区联赛(普及组PASCAL语言)第二大题第2小题) 将N个红球和M个黄球排成一行。例如:N=2,M=2可得到以下6种排法: 红红黄黄? 红黄红黄? 红黄黄红? 黄红红黄? 黄红黄红? 黄黄红红 问题:当N=4,M=3时有多少种不同排法?(不用列出每种排法) 分析:要计算出N=4,M=3的排法。球的总数是7个,我们可以理解为:有7个可以用来存放这些球的箱子,如下图 ? ? ? ? ? ? ? 怎样将这些球放入相应的箱子中呢?如果这7个球完全不一样,我们很容易知道,存放的方法就是7的全排列,即:。但实际上,这7个球只分为两种:红球和黄球。所以,只要我们把其中任意一种球的存放位置确定好,问题就算解决了。剩下的球只需往空的箱子里面放。 比如,我们要确定红球的存放位置。红球一共有4个。要把4个红球放入已知的7个箱子中,因为这4个红球都是一样的,所以存放的方法实际上就是从7个箱子中任取4个的组合,即:。直接套用组合数公式进行计算   35种。 例2:选数(2002年全国青少年信息学(计算机)奥林匹克分区联赛普及组复赛试题第二题) [问题描述]: 已知n个整数x1,x2, …,xn,以及一个整数k(k=n)。从n个整数中任选k个整数相加,可分别得到一系列的和。例如当n=4,k=3,4个整数分别为3,7,12,19时,可得全部的组合与它们的和为: 3+7+12=22? 3+7+19=29? 7+12+19=38? 3+12+19=34 现在,要求你计算出和为素数共有多少种。 例如上例,只有一种的和为素数:3+7+19=29。 [输入]: 键盘输入,格式为:?????????????? n,k(1=n=20,k=n)?????????????? x1,x2, …,xn(1=xi=5000000) [输出]: 屏幕输出,格式为: 一个整数(满足条件的种数) 分析:这是一个典型的综合题。要求我们能够综合运用所学过的数学知识和计算机知识对问题进行分析。从数学方面讲,我们需要对素数和组合都有比较深刻的认识。从计算机方面讲,主要涉及了穷举、迭代和递归算法;并且,要求大家能够深入的理解递归算法的执行过程。 解决这道题需要做好两个工作:①组合的产生;②素数的判定。 可以将已知的n个整数存放在一个数组X中。因为xi的取值范围为1=xi=5000000,所以数组元素的数据类型应该定义为长整型(LONG)。需要设计一个算法,判断给定的整数z是素数(质数)还是合数。将此算法定义为一个函数sushu(z),当z为素数时返回函数值0,否则返回函数值1。参考程序如下: function sushu (z as long) ? sushu = 0 ? for i = 2 to sqr(z) ??? if z mod i = 0 then ????? sushu = 1 ????? exit for ??? end if ? next end function 设计组合的产生算法是本题的难点,也是重点。假如有这样一道题:从x1、x2、x3、x4、x5五个数中任意取不同的3个数组成一组,把所有的可能情况列举出来。对这类问题,我们在数学课上是怎样解决的呢?首先,取出的数与顺序无关,例如{x1,x2,x3}和{x2,x1,x3}属于同一组。这是一个组合问题。为了便于列举,我们将每一组中的元素都按顺序排放。每一组由三个元素组成,这三个元素的存放位置,我们从左向右依次编号为位置1、位置2和位置3,如下图: 位置1 位置2 位置3 接下来按照上面的约定,依次对每一个位置进行分析。首先将x1放入位置1。当把x1放入位置1之后,可以放入位置2的数还有x2、x3、x4和x5。如果再把x2放入位置2,就只剩下x3、x4和x5可以放入位置3了。同样,如果把x1放入位置1,x3放入位置2,那么可以放入位置3的数有x4和x5;如果把x1放入位置1,x4放入位置2,那么可以放入位置3的数就只有x5了(注意我们上面的约定:每一组数中的元素都按顺序排放。)……如下图: 位置1 位置2 位置3 x1 x2 x3 x4 x5 x3 x4 x5 x4 x5 x2 x3 x4 x5 x4 x5 x3 x4 x5 在计算机里面,对这一过程我们可以使用递归算法来实现。定义一个过程zh(m,h),从已知数组x中第m个元素开始,任意取h个元素的组合。n为数组x中元

文档评论(0)

lingyun51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档