Catalan数简介
定义
递推式:
C(n+1)=\sum_{i=1}^{n}C(i)*C(n-i)
其中 C(1)=C(0)=1C(1)=C(0)=1C(1)=C(0)=1
通项公式:
C(n)=\frac {C^n_{2n}}{n+1}
等式右边的 CCC表示组合数。
常见问题
有一个数列由两种数x" role="presentation">xxx和 yyy组成。其中x" role="presentation">xxx和 yyy的总个数相等。对于每一个位置,包括它之前y" role="presentation">yyy的出现次数均不大于 xxx的出现次数。求长度为2n" role="presentation">2n2n2n的这种数列的方案数。
我们把这个数列投到坐标系里。刚开始在原点,横坐标是下标,当前位置为xxx时纵坐标+1,为y" role="presentation">yyy时纵坐标-1。可以发现这个图像一定在第一象限,且因为xxx和y" role="presentation">yyy个数相等,最终一定在(2n,0)(2n,0)(2n,0)点。
设取到第nnn个位置时落在x" role="presentation">xxx轴的方案数为C(n)C(n)C(n),我们把取的过程分成两部分:第一部分为原点到再次落在xxx轴上的步数i" role="presentation">iii(i可以为0),第二部分为从iii到(n,0)" role="presentation">(n,0)(n,0)(n,0)的步数。第一部分的方案数为C(i)C(i)C(i),第二部分的方案数为C(n−i−1)C(n−i−1)C(n-i-1)(因为第二部分的第一步和最后一步是确定的)。递推式即为C(n)=∑n−1i=1C(i)∗C(n−i−1)C(n)=∑i=1n−1C(i)∗C(n−i−1)C(n)=\sum_{i=1}^{n-1}C(i)*C(n-i-1),转化一下即为C(n+1)=∑ni=1C(i)∗C(n−i)C(n+1)=∑i=1nC(i)∗C(n−i)C(n+1)=\sum_{i=1}^{n}C(i)*C(n-i),就是Catalan第nnn项。
第二种方法是把总方案-不合法方案。总方案为C2nn" role="presentation">Cn2nC2nnC_{2n}^n,不合法方案即为长度为2n2n2n的数列取n−1n−1n-1个xxx的情况,也就是C2nn−1" role="presentation">Cn−12nC2nn−1C_{2n}^{n-1},而Cn2n−Cn−12n=Cn2n−nCn2nn+1=Cn2nn+1C2nn−C2nn−1=C2nn−nC2nnn+1=C2nnn+1C_{2n}^n-C_{2n}^{n-1}=C_{2n}^n-\frac{nC_{2n}^n}{n+1}=\frac{C_{2n}^n}{n+1},这也就是Catalan的通项公式
Catalan数简介相关推荐
- 卡特兰数 Catalan数
From: http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html 维基百科资料: 卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题 ...
- Catalan 数之Python演示
这里写自定义目录标题 Catalan 数之Python演示 带限制条件的路径总数 Python演示代码说明 Python代码 Catalan 数之Python演示 关于Catalan 数,英文的下面网 ...
- Catalan数计算
递归与分治 简介 要求用递归算法解决具有递推关系的序列和计数问题,用分治法高效解决具有非线性复 杂度的实际问题,结合文件操作处理大规模数据输入的问题,用 clock_t tm=clock() ...
- 面试收集--卡特兰数(Catalan数)应用
引言:有高矮不同的12个人,现在要他们对应排成两列,保证两列分别有序,且对应位置总是第一列比第二列矮,请问有多少种排列方式? 这是蘑菇街笔试的时候一个题目,当时陷入了枚举分类的死循环中,殊不知如果知道 ...
- Catalan数——卡特兰数
今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来 后来查了下,原来是Catalan数.悲剧啊,现在整理一下 Catalan数--卡特兰数] 一.Catalan数的定义令h( ...
- Catalan数推导(转载)
Raney引理: 设整数序列A = {Ai, i=1, 2, -, N},且部分和Sk=A1+-+Ak,序列中所有的数字的和SN=1,在A的N个循环表示中,有且仅有一个序列B,满足B的任意部分和Si均 ...
- BZOJ 1856: [Scoi2010]字符串 [Catalan数]
1856: [Scoi2010]字符串 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1418 Solved: 790 [Submit][Status ...
- POJ 2084 Catalan数+高精度
POJ 2084 /***************************************** author : Grant Yuan* time : 2014/10/19 15:42* so ...
- C++打印0到N的Catalan数卡特兰数(附完整源码)
打印0到N的Catalan数卡特兰数 打印0到N的Catalan数卡特兰数算法的完整源码(定义,实现,main函数测试) 打印0到N的Catalan数卡特兰数算法的完整源码(定义,实现,main函数测 ...
最新文章
- 全国大学生智能汽车竞赛-讯飞赛道开始报名啦!
- IT人的十八般武艺-序言
- 一个很炫的图片/相册浏览控件(Flex实现)
- 利用RSM和RSFC配置VLAN间路由
- ubuntu + pycharm + anaconda + pyqt4 + tools 配置
- cogs 315. [POJ3255] 地砖RoadBlocks
- 加动画喽。。有一次我设定动画的时间不管用。就把设置时间的代码位置调整到最开始。然后就好了。...
- Android ActivityManager常用方法
- Linux基本操作---实践+理解--CentOS 7
- 大数据常用的挖掘方法,主要有哪些?
- Html+Css实现鼠标经过图片放大
- 【Unity2D】实现人物死亡动画+代码
- Newton冷却定理微分数学公式推导
- ES6高级:扩展运算符,箭头函数,class类,iterator迭代器
- 《鱿鱼游戏》我怕了,还是整点阳间的游戏吧,Python版“碰糖”来袭—你能过几关?
- 算法题练习系列之(一):守形数
- HashMap 扩容阈值为什么是0.75
- B2C电商模式的现状是怎样的?有什么优劣势?
- Oracle多列统计信息
- CLR学习之初识CLR
热门文章
- python functools partial,【Python functools.partial 偏函数】
- 遗传算法求二元函数极值怎么编码_遗传算法求解二元函数极值源码
- 作业:用递归方法求Fibonacci级数,公式fib(n)=fib(n-1)+fib(n-2),(n>2),fib(1)=fib(2)=1
- My Presentation
- 编程新手入门:初学编程的正确学习方法!快速提升你的学习效率
- Keras CIFAR-10分类 SVM 分类器篇
- mysql中的行列转换
- Microsoft Build 2020注册不仅是开放的,而且是免费的,实时的,是虚拟的,并且一切都为您服务
- html块级元素转换内联,内联元素和块级元素相互转换
- 一位台湾读者写的《I. M. Wright's Hard Code》第一章閱讀札記