- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                组合数学在程序设计中的应用 长沙市第一中学 曹利国  Catalan数 定义:一个凸n边形通过不相交于n边形内部的对角线把n边形拆分成若干三角形的不同拆分数。 分析 设Cn表示凸n边形的拆分方案总数。由题目中的要求可知一个凸n边形的任意一条边都必然是一个三角形的一条边,边P1 Pn也不例外,再根据“不在同一直线上的三点可以确定一个三角形”,只要在P2,P3,……,Pn-1点中找一个点Pk(1kn),与P1、Pn 共同构成一个三角形的三个顶点,就将n边形分成了三个不相交的部分(如图3所示),我们分别称之为区域①、区域②、区域③,其中区域③必定是一个三角形,区域①是一个凸k边形,区域②是一个凸n-k+1边形,区域①的拆分方案总数是Ck,区域②的拆分方案数为Cn-k+1,故包含△P1PkPn的n 边形的拆分方案数为CkCn-k+1种,而Pk可以是P2,P3,……,Pn-1种任一点,根据加法原理,凸n边形的三角拆分方案总数为,               同时考虑到计算的方便,约定边界条件C2=1                                 =C( 2n , n ) / ( n + 1) n个+1,n个-1构成2n项 a1,a2,a3,a4,,,,,,a2n其部分和满足a1+a2+......ak (k=1,2,3,...2n)=0的数列个数。  序列a1a2..ak的元素顺序保持不变,按不同结合方式插入合法圆括号对的方案数。n=4(a((bc)d))(a(b(cd)))((ab)(cd))(((ab)c)d)((a(bc))d)  *     程序设计一直与数学联系得非常的紧密,特别是像组合数学这一分支,与程序设计有着千丝万缕的联系。对于某些题目,我们用正常的做法想法也许无从下手,但是如果我们把题目的全局或者局部与组合数学联系起来,或许就会“柳暗花明又一村”——找到了一种特别独特,特别有效率的数学方法,把无从下手的棘手题变得简单易行。这就是组合数学在程序中的运用。      下面使用几个实例说明组合数学在程序中的运用。  引言            P1 Pn ① ② ③ 图4 P2 P3 Pk Pn--1 具体实现时,若直接用上述公式计算,对数字的精度要求较高。可将其化为递归式 再进行递推计算,并且注意类型的定义要用comp型。  一个操作数序列,从1,2,一直到n,栈A的深度大于n。现在可以进行两种操作:1.? 将一个数,从操作数列的头端移至栈的头端(对应栈的push操作)2.? 将一个数,从栈的头端移至输出序列的尾端(对应栈的pop操作)。 使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下表为由1 2 3 生成序列2 3 1 的过程。  步骤  0  1  2  3  4  5  6  操作数序列  123  23  3  3  ?   ?   ?   栈  ?   1  21  1  31  1  ?   输出序列  ?   ?   ?   2  2  23  231  你的程序将对给定的n,计算并输出由操作数序列1,2,……,n经过操作可能得到的输出序列总数。  一 栈(Noip2003 普及组第三题) 结合定义我们很容易能发现:如果进栈看成1,出栈看成0,在任何一位上累计的“0”的个数不大于累计的“1”的个数,因为必须在栈里有数的情况下才能向外弹数。 原题转化为——n个1和n个0组成一个2n位的二进制数,要求从左到右扫描,“0”的累计数不大于“1”的累计数,求满足条件的数有多少。             二 Little rooks(SGU 222)     将k个车摆在n*n的棋盘上,使得任何两个车不能互相攻击(车可以横着或竖着走无限格,不能走斜线)  算法描述     组合数学:排列与组合  由于题目里的棋子是“车”而不是“后”,所以一个棋子不会影响到与其不同行或与其不同列的棋子。结合n皇后问题的方案表示法,我们很容易想到排列组合。  排列的定义:设A={a1,a2,a3……an}是n个不同元素的集合,r满足0=r=n。任取A中r个元素按顺序排成一列,称为从A中取r个的一个排列。 组合的定义:当从n个元素中取出r个而不考虑它的顺序时,称为从n中取r的组合。 根据鸽巢原理n=k,先从简单的情况下手:n=k。此时的公式非常简单:P(n,k)。主要就是对于nk的情况时的处理。  因为每一列最多只能放一颗棋子,所以我们首先把没有棋子的列去掉,再合并成一个n*k的棋盘,结合刚才的数据结构我们能很快知道在这个新棋盘上摆k个棋子还是P( n , k )种方案,再把去掉的(n-k+1)列插入摆棋子的k行中,插入方案总数易得为C( n , k )种。  根据乘法原理,总方案数为C( 
                您可能关注的文档
最近下载
- 精神分析-人格and-人际交往课件.ppt VIP
 - 儿童A族链球菌咽扁桃体炎临床诊疗专家共识(2025).pptx VIP
 - 中国高尿酸血症与痛风诊疗指南解读PPT课件.pptx VIP
 - 部编版初中语文九年级上册 第五单元 口语交际 讨论 教学设计 .docx VIP
 - 2023年最新资料员考试题库附参考答案【精练】.docx
 - 2024年事业单位招聘考试时事政治考试题及答案.docx VIP
 - 上市公司盈利能力分析—中兴通讯为例.docx VIP
 - 精神分析人格and人际交往课件.pptx VIP
 - 精品解析:山东省济南市历下区 2023-2024学年八年级上学期期中考试道德与法治试题(原卷版).docx VIP
 - 机械制图习题集(第4版)张绍群课后习题答案解析.pdf
 
原创力文档
                        

文档评论(0)