算法 - Catalan数 (卡特兰)】的更多相关文章

Catalan数——卡特兰数 今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来后来查了下,原来是Catalan数.悲剧啊,现在整理一下 一.Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1),n>=2该递推关系的解为:h(n) = C(2n-2,n-1)/n,n=1,2,3,...(其中C(2n-2,n-1)表示2n-2个中取n-1个的组合数) 问题描…
Catalan数——卡特兰数 今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来后来查了下,原来是Catalan数.悲剧啊,现在整理一下 一.Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1),n>=2该递推关系的解为:h(n) = C(2n-2,n-1)/n,n=1,2,3,...(其中C(2n-2,n-1)表示2n-2个中取n-1个的组合数) 问题描…
一.Catalan数的定义 令h(0)=1,h(1)=1,Catalan数满足递归式:h(n) = h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)*h(0)  (n>=2) 该递推关系的解为:h(n) = C(2n,n)/(n+1),n=0,1,2,3,... (其中C(2n,n)表示2n个物品中取n个的组合数) 二.问题描述 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 问题分析: 我们先把这12个…
出处:http://blog.sina.com.cn/s/blog_6aefe4250101asv5.html 什么是Catalan数 说到Catalan数,就不得不提及Catalan序列,Catalan序列是一个整数序列,其通项公式是我们从中取出的就叫做第n个Catalan数,前几个Catalan数是:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 3535767…
http://blog.csdn.net/linhuanmars/article/details/24761459 https://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0 Cn表示长度2n的dyck word的个数.Dyck word是一个有n个X和n个Y组成的字串,且所有的前缀字串皆满足X的个数大于等于Y的个数. Cn的另一个表达形式为 所以,Cn是一个自然数:这一点在先前的通项公式中并不显而易见.这个表达形式也是A…
全是入门的一些东西.基本全是从别处抄的. 栈: 支持单端插入删除的线性容器. 也就是说,仅允许在其一端加入一个新元素或删除一个元素. 允许操作的一端也叫栈顶,不允许操作的一端也叫栈底. 数个箱子相叠就可以认为是一个栈,只能在最顶端加入一个新箱子或拿走一个箱子. 栈中的元素遵循后进先出(last in first out,LILO)的规律.即:更早出栈的元素,应为更早入栈者. 这是一个演示: 奇数行为栈中元素(右端可以进行插入删除),元素以逗号隔开, EMPTY表示栈为空 偶数行为进行的操作 EM…
卡特兰数 Catalan数 ( ACM 数论 组合 ) Posted on 2010-08-07 21:51 MiYu 阅读(13170) 评论(1)  编辑 收藏 引用 所属分类: ACM ( 数论 ) .ACM_资料 .ACM ( 组合 ) 维基百科资料: 卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项公式为                       另类递归式:  h(n)=((4*…
内容部分来自以下博客: Cyberspace_TechNode 邀月独斟 一个大叔 表示感谢! Catalan数的引入: 一个长度为2N的序列,里面有N个+1,N个-1 它的任意前缀和均非负,给定N,求有多少个这样的序列 2n个人排队买票,其中n个人持50元,n个人持100元.每张票50元,且一人只买一张票.初始时售票处没有零钱找零.请问这2n个人一共有多少种排队顺序,不至于使售票处找不开钱 可以发现这两个问题的本质是一样的(括号匹配问题),它们的答案都是卡特兰数 定义:令h(0)=1,h(1)…
Catalan数(卡特兰数) 卡特兰数:规定h(0)=1,而h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,h(6)=132,h(7)=429,h(8)=1430,h(9)=4862,h(10)=16796,h(11)=58786,h(12)=208012,h(13)=742900,h(14)=2674440,h(15)=9694845····················· 原理 令h(0)=1,h(1)=1,catalan数满足递推式  : h(n)= h(0)*…
一.定义: 卡特兰数是一组满足下面递推关系的数列: 二.变形: 首先,设h(n)为Catalan数的第n+1项,令h(0)=1,h(1)=1,Catalan数满足递推式: h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2) 可化简为1阶递推关系: h(n)=(4n-2)/(n+1)*h(n-1)  (n>=2) 想看证明的点这里:https://blog.csdn.net/guoyangfan_/article/details/82…
令h(1)=1, h(0)=1,catalan数满足递归式: h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)h(0) (n>=2) =C(2n, n)/(n+1) =h(n-1)*2(2n-1)/(n+1) 具体推导请百度,这里只需记得推导公式为h(n)=h(n-1)*2(2n-1)/(n+1)即可. 我们来说说这个的应用吧,从catalan数的定义递归定义可以看出,它是由自己 本身的一部分和n减去一部分 的和得到的,也就是说,有n个物品,1个物品进行操作1,n-…
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3324 http://blog.csdn.net/xymscau/article/details/6776182 #include<cstdio> #include<cstring> #include<string> #include<queue> #include<iostream> #include<algorit…
都是数学题 思维最重要,什么什么数都没用,DP直接乱搞(雾.. 参考LH课件,以及资料:http://daybreakcx.is-programmer.com/posts/17315.html 做到有关的题目会更新 n个乒乓球放到m个盒子里的方案数 1.球相同,盒子不同,不允许空 分成m段,n-1个空选m-1个放隔板 ,$\binom{n-1}{m-1}$ 2.球相同,盒子不同,允许空 $(1)$ 加入m个球变成不允许空 $(2)$ m-1个隔板和球放在一起,从中选m-1个做隔板 $C_{n+m…
Train Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10372    Accepted Submission(s): 5543 Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Sta…
作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/11938973. 声明:版权所有,转载请注明出处,谢谢. 0.前言 当年博主自己参加校招笔试面试时就遇到过几次catalan数相关的题目,今年又到了互联网招聘季,翻看下近期各大公司的笔试面试题,发现它依旧是很容易被考察的点.尴尬的是,博主自己觉得catalan数相关的题目不好归类到某种具体的数据结构或者算法里面(计算catalan数的那个小程序不算算法…
Catalan数列是非常奇妙的一列数字,因为很多问题的解就是一个Catalan数.知道了这一规律,很多看似复杂的问题便可迎刃而解.那么什么是Catalan数,什么样的问题的解是Catalan数呢? 1,Catalan数 先来看一段Catalan数列:1,1,2,5,14,42,132,429,1430,4862,16796,即 h(0)=1,h(1)=1,h(2)=2,h(3)=5... 怎么求出来的呢?两种方式 (1) h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-…
题意 挺简洁的. 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满足a1<a3<…<a2n-1,所有的偶数项满足a2<a4<…<a2n: (3)任意相邻的两项a2i-1与a2i(1≤i≤n)满足奇数项小于偶数项,即:a2i-1<a2i. 现在的任务是:对于给定的n,请求出有多少个不同的长度为2n的有趣的数列.因为最后的答案可能很大,所以只要求输出答案 mod P的值.…
题目中对卡特兰数的总结很不错 以下copy自题目 Catalan数列:1,1,2,5,14,42,(前面几个要背) 即 h(0)=1,h(1)=1,h(2)=2,h(3)=5...公式:h(n)=C(n,2n)/(n+1)    注:C(3,5)表示组合数5个数选3个的方案数 递推公式:h(n)=h(n-1)*(4*n-2)/(n+1); 是不是很简单呀?下面的题也是Catalan数: 1:有2n个人排成一行进入剧场.入场费5元.其中只有n个人有一张5元钞票,另外n人只有10元钞票, 剧院无其它…
百度一番: 历史 ·1758年,Johann Segner 给出了欧拉问题的递推关系: ·1838年,研究热潮: –GabrielLame给出完整证明和简洁表达式: –EugèneCharlesCatalan在研究汉诺塔时探讨了相关问题,解决了括号表达式的问题. –…… –1900年,EugenNetto在著作中将该数归功于Catalan. ·1988年以及1999年的文献研究表明实际上最初发现Catalan数的也不是Euler. –1753欧拉在解决凸包划分成三角形问题的时候,推出了Catal…
Trees Made to Order Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7155   Accepted: 4094 Description We can number binary trees using the following scheme: The empty tree is numbered 0. The single-node tree is numbered 1. All binary tre…
如何让孩子爱上打表 Catalan数 Catalan数是组合数学中一个常出现在各种计数问题中的数列. 以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名. 先丢个公式(设第n项为$h_n$): $h_n=h_0*h_{n-1}+h_1*h_{n-2}+...+h_{n-1}*h_0,(n \ge 2)$ $h_n=\frac{h_{n-1}*(4n-2)}{n+1}$ $h_n=C_{2n}^n-C_{2n}^{n-1}=\frac{C_{2n}^n}{n+1}$ 应用 出栈…
Catalan数就是魔法 火车进出栈问题即: 一个栈(无穷大)的进栈序列为 1,2,3,4,...,n 求有多少个不同的出栈序列? 将问题进行抽象, 假设'+'代表进栈, 则有'-'代表出栈 那么如果进栈序列为123, 则: + + + - - - 将1, 2, 3压入栈后再将3, 2, 1弹出 得到出栈序列为321 同样, + - + - + - 得到出栈序列为123 上面所述的均为合法进出栈的序列 可发现规律: 序列中 + 的个数等于 - 的个数 但是如 + - - + +  - 这样的序列…
应用一: codevs 3112 二叉树计数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold   题目描述 Description 一个有n个结点的二叉树总共有多少种形态 输入描述 Input Description 读入一个正整数n 输出描述 Output Description 输出一个正整数表示答案 样例输入 Sample Input 6 样例输出 Sample Output 132 数据范围及提示 Data Size & Hint 1<=n&l…
Problem: n个人(偶数)排队,排两行,每一行的身高依次递增,且第二行的人的身高大于对应的第一行的人,问有多少种方案.mod 1e9+9 Solution: 这道题由1,2,5,14 应该想到Catalan数,但是我却花了两个小时去找递推式. 首先 Catalan数 : 基本规律:1,2,5,14,42,132,.......... 典型例题: 1.多边形分割.一个多边形分为若干个三角形有多少种分法. C(n)=∑(i=2...n-1)C(i)*C(n-i+1) 2.排队问题:转化为n个人…
Catalan数 [参考网址]http://www.cnblogs.com/gongxijun/p/3232682.html 记得当时我们队写过一个,差点超时,现在找到了公式,感觉还是挺简单的. 还要注意,就算开long long 也只能表示到第33个,之后就会溢出. &代码: void Solve() { f[1]=1; for(int i=2;i<40;i++){ f[i]=f[i-1]*(4*i-2)/(i+1); } PIar(f,40) } 输出数据在下面,也很显然,33之后就变成…
先看2个问题: 问题一: n个元素进栈(栈无穷大),进栈顺序为1,2,3,....n,那么有多少种出栈顺序? 先从简单的入手:n=1,当然只有1种:n=2,可以是1,2  也可以是2,1:那么有2种:n=3,可以是1,2,3或1,3,2或2,1,3或2,3,1或3,2,1:一共5种:容易联想到可能有一个通项公式可以求:(扯一点,以前学栈的时候做过判断一个序列是否为合法的出栈顺序的题目,只要依次检查序列,对于一个元素i,在i后面出来的且序号比i小的肯定是从大到小出来的,比如 4 2 1 3,如果4…
一.catalan数由来和性质 1)由来 catalan数(卡塔兰数)取自组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项公式为 令其为h(n)的话,满足h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2) 我们从中取出的Cn就叫做第n个Catalan数,前几个Catalan数是:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862,…
Raney引理: 设整数序列A = {Ai, i=1, 2, …, N},且部分和Sk=A1+…+Ak,序列中所有的数字的和SN=1,在A的N个循环表示中,有且仅有一个序列B,满足B的任意部分和Si均大于零. Raney引理有一个很简单的数形结合的证明见<浅谈数形结合思想在信息学竞赛中的应用>. 关于Catalan数wiki和百科上写的很详细,其中有一问题一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?该问题的解为h(n). 用1表示一个数字进栈,-1表示一个数字出栈,…
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=4828 Catalan数的公式为 C[n+1] = C[n] * (4 * n + 2) / (n + 2) 题目要求对M = 1e9+7 取模 利用乘法逆元将原式中除以(n+2)取模变为对(n+2)逆元的乘法取模 C[n+1] = C[n] * (4 * n + 2) * Pow(n+2, MOD-2) % MOD 其中Pow用快速幂解决 #include <cstdio> #include…
打个表找一下规律可以发现...就是卡特兰数...卡特兰数可以用组合数计算.对于这道题,ans(n) = C(n, 2n) / (n+1) , 分解质因数去算就可以了... ---------------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm>   using names…