栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

卡特兰数(计算顺序进栈的出栈情况)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

卡特兰数(计算顺序进栈的出栈情况)

原题链接:牛客网
原题:

若一序列进栈顺序为e1,e2,e3,e4,e5,问存在多少种可能的出栈序列? 答案为42

该题为组合数学问题,有一段解释我觉得说得很好:

首先,我们设 f(n)=序列个数为n的出栈序列种数。(我们假定,最后出栈的元素为k,显然,k取不同值时的情况是相互独立的,也就是求出每种k最后出栈的情况数后可用加法原则,由于k最后出栈,因此,在k入栈之前,比k小的值均出栈,此处情况有f(k-1)种,而之后比k大的值入栈,且都在k之前出栈,因此有f(n-k)种方式,由于比k小和比k大的值入栈出栈情况是相互独立的,此处可用乘法原则, f(n-k)*f(k-1)种,求和便是Catalan递归式,得到的结果便是卡特兰数。

卡特兰数原理:

设h(n)为catalan数的第n项,令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(2)=h(0)h(1)+h(1)h(0)=11+11=2
h(3)=h(0)h(2)+h(1)h(1)+h(2)h(0)=12+11+21=5

重点来了:n从0-10对应的卡特兰数

1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796
题目对应n=5的卡特兰数,为42

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298917.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号