卡特兰数在括号串中的应用

数据结构 | 算法中的卡特兰数的应用 输入一个整数n,计算h(n)。令h(0)=1,h(1)=1,Catalan数满足递推式例如另类递推式递推关系的解为递推关系的另类解为//函数功能计算Catalan的第n项//函数参数n为项数//返回值第n个Catalan数{return1;//保存临时结果//h(0)和h(1)i... 阅读详情

本篇文章主要记录思路和一些自己的想法,没有具体代码,想看代码的可以叉掉了。


先看一条题目:

(我将没用的信息过滤后,题目简化为:)求长度为n的只包含'('和')'的,且匹配括号数最多的,字符串的个数。


分析:

如果有一定的算法经验的话,可以联想到:括号对数为N的括号匹配的字符串个数有C(N)个,其中C(N)为卡特兰数。

这里有个讲解卡特兰数的非常好的一篇文章:传送门。

所以说n为偶数的情况很简单,答案就是C(n/2);

主要的难点在于n为奇数的情况。

n为奇数的时候,怎么办呢。

这里引用kouylan的讲解:题解【[JDWOI-2] 括号串】 - kouylan 的博客 - 洛谷博客 (luogu.com.cn)

 

说实话,这个思路的合理性直观来想很难觉得它合理。。。

反正我想了很久,觉得充分性马马虎虎,必要性有点难相通。

这里抛出我的一个思路:

  实际上,对于奇数个括号组成的匹配括号数最多的字符串,它都可以归结于整个字符串最左边或者最后边缺少一个左括号或者右括号,换句话说,如果在最左边或者最右边增加一个左括号或者右括号,都可以使其成为完全匹配的括号字符串。(可以从  使用栈方法   检验匹配括号字符串的  思路上去考虑这个说法,从-1 ,1  的方法 也可以考虑得通)。

那么就好办了,当n为奇数时,考虑n+1个括号完全匹配的字符串数,然后分别将里面的字符串减去最左边的括号或者最右边的括号即可得到n个括号的最多括号匹配字符串。

所以答案很显然就是2*C((n+1)/2),与答案分析结果相符。


结语:

总之,说了这么多,要想拿下相关题目还是得熟练掌握使用乘法逆元计算出大数的卡特兰数的代码。

卡特兰数(Catalan)应用:输出所有N对合法括号序列和输出所有已知进栈序列的合法出栈序列 Catalan应用 输出所有N对合法括号序列 输出所有已知进栈序列的合法出栈序列 http://blog.youkuaiyun.com/ssuchange/article/details/17394609 立即下载

相关推荐

Windows如何使用Anaconda 3进行keras环境的配置

** Windows如何使用Anaconda 3进行keras环境的配置 搭建Keras环境* Anaconda3如何安装keras,主要包括下面三步: 1.安装mingw libpython 2.安装theano 3.安装keras 若你还没有按装anaconda,赶紧下载安装吧! 下载途径有两个 (1)Anaconda版本为Anaconda 4.4.0,对应的python版本为3.6,附上An...

Lance_liangliang的博客 1601

卡特兰数及括号正确匹配个数问题解释

今天碰到这样一个问题:  n对括号正确匹配组成的字符串数,例如 1对括号:()                                              1种可能 2对括号:()()                                            1种可能  3对括号:((())) ()(()) ()()() (())() (()())

magic_andy的专栏 9517

Palantir的Ontology:从静态知识图谱到动态业务引擎的跃迁

本文探讨了Palantir的Ontology技术如何将静态知识图谱升级为动态业务引擎。通过引入函数和行动作为核心元素,Ontology实现了业务逻辑的自动化响应与执行,显著提升物流、能源等领域的运营效率。文章详细解析了其混合存储引擎、状态监听网络等关键技术设计,并对比展示了传统架构与Ontology架构的业务价值差异。

weixin_42570296的博客 200

卡特兰数——括号匹配问题

卡特兰数的递推公式是F(n)=∑(k=1…n){F(k-1)*F(n-k)}=∑(k=0…n-1){F(k)*F(n-k-1)} 一般性公式为F(n)=C(2n,n)/(n+1) 可以描述的问题有 1、n个元素的二叉查找树有多少种。 2、n*n棋盘从左下角走到右上角而不穿过主对角线的走法。 3、2n个人排队买票问题,票价50,n个人拿50元,n个人拿100元,售票处无零钱,能顺利卖票

zz_ylolita 2988

MySQL等保三级合规实践:如何安全配置root账户的本地与受信主机登录策略

本文详细介绍了MySQL在等保三级合规框架下如何安全配置root账户的本地与受信主机登录策略。通过分析root账户的特殊保护需求,提供三种安全加固方案,包括限制访问范围、限定登录IP和完全禁止远程登录,并指导创建安全的远程管理账户。文章还涵盖了密码策略强化、日志审计配置和网络层防护等关键合规要求,帮助用户实现MySQL的等保三级全面合规。

weixin_42522964的博客 259

WindTerm 安装使用教程

WindTerm是一款Github上开源的 SSH 终端工具,它是完全可以比肩MobaXterm工具的。

m0_69576880的博客 4024

算法中的数学---卡特兰数(解析+代码实现)

总结一下碰到的关于卡特兰数的问题,方便后续复习。

KI的博客 10万+

【Audio】基于STM32 I2S移植WM8978 Audio Codec驱动

1. WM8978简介 WM8978是一款低功耗,高质量的立体声编解码器,专为便携式应用,如数码相机或数码摄像机等。 该芯片集成了立体声差分麦克风的前置放大器,并包括扬声器、耳机和差分或立体声线输出的驱动器。外部组件要求减少,因为不需要单独的麦克风或耳机放大器。 WM8978的功能框图如下所示: 2. WM8978硬件连接 使用STM32F429+WM8978硬件平台,通过I2S接口来读写音频数据,I2C接口发送写命令控制WM8978相关功能。 STM32F429与WM8978的引脚连接如下:

ZHONGCAI0901的博客 1万+

数论 卡特兰Catalan数

Catalan数可以表示括号匹配问题的解决方案数量。例如,在一个合法的括号序列中,括号的闭合方式可以由Catalan数来计算。

weixin_62147223的博客 734

Python 爬虫实战:破解网页 JS 混淆加密参数

摘要:本文针对Python爬虫破解JS混淆加密参数的技术难题,系统解析了变量混淆、控制流混淆、AES/MD5加密混淆等常见类型及其检测方法,提出"定位-还原-复现"的三步破解策略。通过实战案例详细演示了从JS逆向分析到Python代码实现的完整流程,包括MD5签名生成、AES加密复现等核心代码实现,并对不同混淆场景的破解方法进行了对比分析。文中特别强调技术应用的合规性边界,指出开发者应遵守相关法律法规,在合理范围内使用逆向技术。随着反爬技术升级,建议开发者持续学习动态调试等进阶技能,同时

2503_91057718的博客 2067

外向交货单批次赋值的标准姿势:用 BAPI_OUTB_DELIVERY_CHANGE 把 LIPS-CHARG 改得稳、改得干净

摘要: 外向交货单批次赋值涉及严格的业务约束,包括批次管理状态、单据状态、拆分规则等,直接更新表 LIPS 不可取。推荐使用 BAPI_OUTB_DELIVERY_CHANGE 接口,通过标准业务逻辑实现批次修改。关键点包括:区分单批次分配与批次拆分场景,正确设置 ITEM_CONTROL 控制结构,并确保单位/数量数据完整。附可直接执行的ABAP代码示例,实现安全可靠的批次更新流程。 (字数:149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 397

括号匹配+catlan数

 括号匹配问题+Catlan数: (1)问题: 现在有n个小括号对(括号对是指‘(’和‘)’),输出所有合法的括号排列顺序。 如,(()())、((())),()()(),()(()),(())()是5个合法的括号序列,此时n=3。 (2)方法一: Catlan数的输出,根据n得出入栈序列为:()()()...共n个。 http://blog.youkuaiyun.com/legend050

legend050709的专栏 1447

MATLAB与图像处理(一):图像中结构张量的求法(Structure Tensor)

1.结构张量的作用:       能够区分图像中的平坦区域,边缘,角点; 2.图像中的结构张量的定义    1)是一个矩阵;    2)与图像的水平,垂直梯度有关,定义如下: 在MATLAB中,可以用如下语句求解:[Ix,Iy]=gradient(Image); 3)求出结构张量矩阵的行列式,和迹(矩阵对角线之和)   行列式:K=det(E);   迹:  

wenyusuran的专栏 5240

卡特兰数

首先思考这样一个问题:给定n个不同的正整数1~n,依次进行出栈入栈操作,出栈的顺序有多少种?对于每个正整数都会入栈一次、出栈一次,我们将入栈记为+1,出栈记为-1,会得到如下的序列:+1,-1,+1,+1,....,+1,-1,记总和为total,因为每个元素只会分别入栈出栈各一次,所以total=0又因为栈中的元素个数不可能为负数,由此可以得到这个序列的所有前缀和均大于等于0我们记其中一个前缀+1的个数为y,-1的个数为x,会得到y-x>=0,即y>=x,其中1<=x<=n,1<=y<=n。

weixin_72963754的博客 1566

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

卡特兰数学习

卡特兰数(英语:Catalan number),又称卡塔兰数,明安图数。是。它在不同的计数问题中频繁出现。

2401_82677021的博客 3120

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

卡特兰数递推式的应用

如题

INF_512的博客 1172

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

出栈序列数与括号匹配(卡特兰数的应用)

摘要:n个元素顺序入栈的出栈序列总数为第n个卡特兰数,可通过括号匹配问题建模。合法序列需满足任何前缀中入栈数≥出栈数。利用反射原理计算:从(0,0)到(n,n)的路径中,合法路径数=总路径数减去非法路径数(首次穿过y=x后作镜像对称)。最终卡特兰数公式为Cₙ=[1/(n+1)]C(2n,n),该数同时表示合法括号匹配数、栈序列数等多种组合问题。

Sintream_ouse的博客 994

卡特兰数的应用,你知道几个?

卡特兰递推公式 1.    2. 3. 4. 5. 卡特兰数的应用 1. 由n个+1和n个-1构成2n项其部分和满足的序列个数等于第n个Catalan数。 假设不满足条件的序列个数为,那么就有。而对于不满足的序列,必然存在某一个奇数位使,而且+1的个数恰好比-1的个数少一个,此时我们将前k项中的+1变为-1,将-1变为+1,那么就得到一个有(n+1)

zhangmh93425的专栏 8338

卡特兰数及其应用

前言 A和B是两个毫不相关的集合,但是集合的个数可数。只要能找到某一个映射 f ,让A集合里的一个样本x只对应B集合里的一个样本y;同时能找到一个映射g,让B里的某一个样本只对应A里的某一个样本。其中,f,g,A,B毫无关系,可以得到A的集合数量等于B的集合数量。 卡特兰数 卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。其前几项为: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 2

Harrison的学习博客 2083

什么是卡特兰数

#简介 卡特兰数是组合数学中一个常出现在各种计数问题中的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名。 数列的前几项为:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862,… 卡特兰数Cn满足以下递推关系: Cn+1 = C0Cn + C1Cn-1 + ··· + CnC0 ##原理 设h(n)为catalan数的第n+1项,令h(0)=1,h(1)=1,catalan数满足递推式: h(n)= h(0) * h(n-1) + h

weixin_44471490的博客 3584

卡特兰数之括号匹配数问题(HDU5673)

摘抄百度百科: 卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名,其前几项为 : 1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845,35357670,129644790,4776...

weixin_43965698的博客 1586

卡特兰数汇总

本文讲解卡特兰数的各种递推公式,以及卡特兰数、卡特兰大数、卡特兰大数取模的代码实现,最后再顺带提一下卡特兰数的几个应用。 什么是卡特兰数呢?卡特兰数无非是一组有着某种规律的序列。重要的是它的应用。 卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845,...

nuoyanli的博客 2152

n对括号的匹配方式(卡特兰数)

4对括号有多少种可能的合法匹配方式?n对括号呢? 此题是卡特兰数的一个通常应用,相似的还有出栈顺序等。关于卡特兰数的具体内容,请参阅百度百科或Wiki. http://baike.baidu.com/view/2499752.htm   网络上可以搜到很多相关的题目和解答,但是鲜有易懂的推导过程。这里记录一种推导过程如下:   结论:对于n对括号,合法的排列共有C(n,2n) -

immiao的专栏 5608

卡特兰数-Catalan数

卡特兰数的含义: 说到卡特兰数,就不得不提及卡特兰数序列,卡特兰数序列是一个整数序列,其通项公式是我们从中取出的就叫做第n个卡特兰数数,前几个卡特兰数数是:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, …运用卡特兰数可以解决许多实际问题上的计数问题 卡特兰数的几个基本性质以及变形公式:

qq_18661257的专栏 1633
上一篇: 《红黑树最少和最多红节点》贪心法题解分析
下一篇: 《数据结构》树和二叉树代码整理(C语言实现)
咖啡咖_CoffCa
博客等级 码龄6年 116粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咖啡咖_CoffCa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值