卡特兰数是组合数学中常见也是重要的特殊计数公式。 首先给出一个现实问题的模型: 给出凸多边形的边数n,求解该凸多边形内部不相交的对角线把这个区域分成三角形区域的方法数。 首先我们进行初步的分析,当n=2,h2=1,也就是说对于三角形,划分的情况数是1.这似乎有些不好理解,由于三角形内部无法添加对角线 ...
分类:
其他好文 时间:
2016-09-09 20:43:21
阅读次数:
170
【分析】 当m<n,显然一定不合法。 所以我们考虑m>=n,类比n=m时的方案数推法,总方案为C(m,m+n),要减去不符合的情况。 我们扫描一个数,找到第一个不符合的位置,假设是有a个1,a+1个1,那么我们后面会填n-a-1个-1,m-a个1,我们把后面的1和-1交换,就得到了一个有m-a个-1 ...
分类:
其他好文 时间:
2016-09-07 22:58:14
阅读次数:
216
另类递归式: h(n)=h(n-1)*(4*n-2)/(n+1); (从n开始,更常用) 前几个卡特兰数:规定C0=1,而 分类 : 括号,栈,矩阵乘法, 凸多边形划分,二叉搜索树构造 步数上下,找零, C1=1,C2=2,C3=5,C4=14,C5=42, C6=132,C7=429,C8=143 ...
分类:
其他好文 时间:
2016-09-02 19:01:59
阅读次数:
181
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1789 题目大意: 求大卡特兰数。。公式如下。输入n求Sn(n<=5000) 题目思路: 【高精度】 Sn=Cn+1。直接压四位高精度算一遍就好。只要写高精度乘单精度,高精度除单精度。 1 ...
分类:
其他好文 时间:
2016-08-31 22:06:25
阅读次数:
189
题目是说给出一个数字,然后以1到这个数为序号当做二叉树的结点,问总共有几种组成二叉树的方式。这个题就是用卡特兰数算出个数,然后因为有编号,不同的编号对应不同的方式,所以结果是卡特兰数乘这个数的阶乘种方案。因为数字比较大,所以要用高精度的方法也就是用字符数组来做,我分别写了三个函数,一个算加法,一个算 ...
分类:
其他好文 时间:
2016-08-19 22:00:24
阅读次数:
124
catalan数 其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845。。。。。 令h(1)=1,h(0)=1,catalan数满足 递归式: h(n)= h( ...
分类:
其他好文 时间:
2016-08-18 14:29:05
阅读次数:
156
一,问题描述 给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?如何输出所有可能的出栈序列? 比如入栈序列为:1 2 3 ,则出栈序列一共有五种,分别如下:1 2 3、1 3 2、2 1 3、2 3 1、3 2 1 二,问题分析 先介绍几个规律: ①对于出栈序列中的每一个数字,在 ...
分类:
其他好文 时间:
2016-08-18 12:38:37
阅读次数:
226
很多组合题都会用到卡特兰数,增长速度又很快,应该写个高精度尊敬一下~ ...
分类:
编程语言 时间:
2016-08-17 00:11:19
阅读次数:
339
题意:共n张无中生有,m张攻击牌。每张攻击牌攻击力已知,敌方有p点血。随机洗牌。游戏开始,己方抽取一张手牌,若是无中生有则可再抽两张牌。求能在第一回合内将敌方杀死的概率。 n+m <= 20, p <= 1000; 很明显,与卡特兰数有关,原先栈内数量为1,抽到无中生有即入栈,否则出栈。 枚举攻击牌 ...
分类:
其他好文 时间:
2016-08-10 06:25:46
阅读次数:
195
看了下大牛们的,原来这题是卡特兰数,顺便练练java。递归式子:h(0)=1,h(1)=1 h(n)= h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)h(0) (其中n>=2) 打表172MS ...
分类:
其他好文 时间:
2016-08-09 14:48:37
阅读次数:
113