Catalan数

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 阅读详情

Catalan数:

f[n] = f[1]*f[n-1]+f[2]*f[n-2]+.............+f[n-1]*f[1]; 

递推公式f(n)=((4*n-2)/(n+1))*f(n-1);


应用:Catalan习题


1.括号化问题

.Dyck word是一个有n个X和n个Y组成的字串,且所有的部分字串皆满足X的个数大于等于Y的个数。以下为长度为6的dyck words:

假设n为3:XXXYYY XYXXYY XYXYXY XXYYXY XXYXYY


我们把x看成做括号,y看成右括号。

那个元素,我们按最后一个元素出栈分类计算:

若最后出栈的是第一位,则它等剩余n-1个操作完后出来,a[n-1]

若最后出栈的第二位,则它先等第一位出来,然后等剩下n-2个处理完后出来,a[n-2]

若最后出栈的第三位,则它要先等前两位出来,a[2],然后等剩余n-3个处理完后出来,a[2]*a[n-3]

于是满足Catalan数。栈的出栈次序,n对括号的匹配次序等等


2.矩阵连乘的方法数问题:

对于M1(M2(M3M4))和(M1(M2M3))M4会得到相同的结果

但是前一种需要125000次,后一种2200次乘法。所以我们要注意矩阵相乘的次序

我们可以借鉴括号化问题来思考,通过考虑最后一次乘法的位置来判断,推理同上。


3.n节点二叉树的构造方法数(左子树值 < 根节点值 < 右子树的值)

对于根肯定会占用一个节点,则根节点的左右子树节点数量会有0:n-1  1:n-2 ...... n-1:0

假设T[n]表示n个节点的方法数:T[n] = T[0]*T[n-1] + ....... T[n-1]*T[0]

hdu 1130


4.n凸边形划分为三角形的方法数

以凸边形的一边AB为基础,我们可以分别讨论第三点所在的位置来,连接三点后,三角形左右是两个凸边形。

然后求解两个凸边形即可。

所以F[n] = F[2]*F[n] + F[3]*F[n-1]+......+F[n]*F[2];

F[0]*F[n-2]表示左边凸边形节点为0,右边凸边形的节点数为n-2


5.将圆上的2n个点连接起来,求这n条线段不相交的方法数

类似于三角形的问题,选择一个点为基,则这条直线左右的点数可能:0:n-2   1:n-3 ... n-2:1

所以我们F[n] = F[0]*F[n-2] + F[1]*F[n-3] + ....... F[n-2]*F[0];


6. 2n个人排成一行进入剧场,入场费5元。其中n个人有一张5元,另外n个人只有10元。请问有多少种方法使只要

有10元买票,售票处就一定能找出5元

类似于上面括号化问题,进行 进出栈即可。


7.在不越过主对角线的前提下从左下角运动到右上角的方案数。



不越过主对角线,即步数上x >= y,如此便可以转化成1中求Dyck word   (好机智)

证明:

令1表示进栈,0表示出栈,则可转化为求一个2n位、含n个1、n个0的二进制数,满足从左往右扫描到任意一位时,经过的0数不多于1数。显然含n个1、n个0的2n位二进制数共有个,下面考虑不满足要求的数目.

考虑一个含n个1、n个0的2n位二进制数,扫描到第2m+1位上时有m+1个0和m个1(容易证明一定存在这样的情况),则后面的0-1排列中必有n-m个1和n-m-1个0。将2m+2及其以后的部分0变成1、1变成0,则对应一个n+1个0和n-1个1的二进制数。反之亦然(相似的思路证明两者一一对应)。


/*在前面出现错误的部分,它的子串(不包括自己)一定是正确的,把前面这段看成key的话,对于每个相同key,

后面转变后肯定是不同的,所以一一对应。

/*个人学习


Catalan数计算公式 #include&lt;iostream&gt; using namespace std; struct BIGNUM { int s[200], l; }c[120]; //c[i]=hi BIGNUM operator*(BIGNUM a, int b) //a=a*b { for (int i = 0; i &lt; a.l; i++) a.s[i] *= b; for(int i=... 阅读详情

相关推荐

python实现ECMS算法

ECMS(Equivalent Consumption Minimization Strategy)算法是一种用于混合动力汽车能量管理系统的优化策略。它通过计算等效油耗来平衡电池电量消耗和燃油消耗,从而优化整体能耗。以下是一个简单的Python实现,用于演示ECMS算法的基本思想。这个实现假设了一个简单的混合动力汽车模型,其中电池电量和燃油消耗是主要的优化目标。

weixin_45570158的博客 923

卡特兰数(Catalan)及其应用

卡特兰数 卡特兰数是组合数学中一个常出现在各种计数问题中出现的数列。 卡特兰数前几项为 : C0=1,C1=1,C2=2,C3=5,C4=14,C5=42,C6=132,C7=429,C8=1430,C9=4862,C10=16796 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440

ZkvIA的博客 1万+

【01】Canoe零基础手把手教学 --- Canoe安装

Canoe零基础手把手教学

jaytinlove的博客 7771

卡特兰数

catalan number   1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786....   递推公式:令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)   另类递归式:   h(n)=(

610

Qt快速读取Excel文件

网上很多读取方式都是如下形式,太慢了,打开文件+读取文件要6s以上,实在是受不了! QAxObject excel("Excel.Application"); excel.setProperty("Visible", false); QAxObject *work_books = excel.querySubObject("WorkBooks"); work_boo...

c+c++的博客 2万+

FCL碰撞检测库在Windows下的编译与配置(MinGW+CMake)

本文详细介绍了在Windows系统下使用MinGW和CMake编译配置FCL碰撞检测库的完整流程。内容涵盖MinGW-w64、CMake的安装与环境配置,关键依赖库Eigen和libccd的安装,以及FCL源码的编译、安装与实战测试。重点解析了CMake配置命令中的关键参数与常见错误解决方案,旨在帮助开发者高效完成FCL在Windows平台的部署,适用于机器人、游戏物理引擎等需要精确碰撞检测的开发场景。

sunny的博客 484

Catalan (卡特兰数)

Catalan的介绍 Acwing 197 阶乘分解 题解 Acwing130 火车进出栈问题 题解

日常记录,挨打要立正! 6718

win11重装系统简易教程-小白也可以上手!

本文介绍一下win11系统重装的各个步骤,也作为记录供自己后面查看。附上我之前参考的一位知乎大神写的重装win10系统文章的地址本文用到的工具全部是,不需要下载第三方镜像文件(不是说这个不好,只是第三方的软件或镜像文件网上非常多,琳琅满目,小白需要筛选甄别,直接用官方的就比较省心,大神请自便~)

Sddqa的博客 1万+

catalan 数 标准二维表。 高精度计算。

设n 是一个正整数。2xn的标准2维表是由正整数1,2,…,2n 组成的2xn 数组,该数组的每行从左到右递增,每列从上到下递增。2xn的标准2维表全体记为Tab(n)。例如,当n=3时Tab(3)如下: 给定正整数n,计算Tab(n)中2´n的标准2 维表的个数。

LTianchao的专栏 2209

瑞萨RA6M4平台I2C驱动移植实战:MPU6050传感器集成指南

本文详细介绍了在瑞萨RA6M4平台上进行I2C驱动移植并集成MPU6050传感器的实战指南。通过FSP配置工具添加I2C主栈,适配MPU6050官方驱动,实现传感器数据读取与调试,为嵌入式开发提供完整的解决方案。

banana的博客 109

《PCI Express体系结构导读1》-- PCI简介

请先阅读完一遍此书再来看文章哦,这样效率更高~

HoneyIC的博客 152

二叉树形态数推导 (Catalan 数)

摘要:树的形态数推导 本文系统推导了不同树结构的形态数目。对于n个节点的二叉树,形态数遵循Catalan数 ( C_n = \frac{1}{n+1}\binom{2n}{n} );k叉树则推广为Fuss-Catalan数 ( C_n^{(k)} = \frac{1}{(k-1)n+1}\binom{kn}{n} )。有序树的形态数仍为Catalan数,而无序树因对称性需用Pólya计数理论求解,无显式解。关键发现:二叉树和k叉树对应Fuss-Catalan数,有序树是Catalan数的平移,无序树需群论处

youngerwang的博客 1206

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Catalan 数计算及应用

一、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)    

chlele0105的专栏 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Catalan数的一些结论

此文章有一部分(定理,证明)来自于华中师范大学学报(自然科学版) 主要结论         定理               n个“1”和n个“0”组成的2n位的二进制数,要求从左到右扫描,“1”的累计数不小于“0”的累计数,这样的二进制数的个数位著名的Calatan数 C(2n,n)/(n+1) ,(n>=0)         证明               令An为n个“

sdut_jean的博客 4218

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

catalan数

catalan数应用 常见的应用如下: 1:括号化 矩阵连乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种) 2:出栈次序 一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列? h(n) 3:凸多边形三角划分 f(n) = h(n-2) 例如:f(6) = h(4) = 14 **catal ca...

qq_43519437的博客 251

Catalan数简介

定义 递推式: C(n+1)=∑i=1nC(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) 其中C(1)=C(0)=1C(1)=C(0)=1C(1)=C(0)=1 通项公式: C(n)=Cn2nn+1C(n)=C2nnn+1 C(n)=\frac {C^n_{2n}}{n+1} 等式右边的CCC表示...

forezxl的博客 456

Catalan数计算

递归与分治   简介    要求用递归算法解决具有递推关系的序列和计数问题,用分治法高效解决具有非线性复 杂度的实际问题,结合文件操作处理大规模数据输入的问题,用 clock_t tm=clock()测定算法 执行时间,单位:毫秒。 样例引入   Catalan 数 C(n)的计算:小兔的棋盘 题意:Catalan 数的定义如下,首先规定 C(0)为 1,然后按照下式定义 C(n)。 !Catalan 例如 n=5,C(5)=C(0)C(4)+C(1)C(3)+C(2)C(2)+C(3)C(1)+C(4

kasugano_sora_的博客 1393
上一篇: hdu 5573Binary Tree
下一篇: hdu 1130 How Many Trees?(Catalan数)
Tyuio28
博客等级 码龄11年 12粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值