卡特兰数(Catalan)

news/2024/11/16 6:36:59/文章来源:https://www.cnblogs.com/zhengchenxi/p/18333335

1.简介:

卡特兰数是组合数学中一个常出现于各种计数问题中的数列。

十以内的卡特兰数,方便打表找规律,稍微记记。
1 2 5 14 42 132 429 1430 4862 16796

2.catalan递推式子

(1)

点击查看代码
#include<bits/stdc++.h>
using namespace std;#define int long long
const int N=1e5+100;
const int mod=1e9+7;
int n;
int dp[N];
void Catalan(int n)
{dp[0]=1;dp[1]=1;for(int j=2;j<=n;j++){for(int i=0;i<j;i++){(dp[j]+=dp[i]*dp[j-1-i]%mod)%=mod;}}
}signed main()
{scanf("%lld",&n);Catalan(n);for(int i=1;i<=n;i++)printf("%lld\n",dp[i]);
}
(2)

3.适用范围

(1)括号匹配

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。

类似的,再来看一道例题:

买卖找零问题:

售票处售卖球票,每张票 50 元。有2n人前来买票

其中一半人手持 50 元钞票
另一半人手持 100 元钞票
若售票处开始没有任何零钱,问:有多少种排队方式,能够让售票顺畅进行。

思路:

把手持 50 元钞票的人视为左括
把手持 100 元钞票的人视为右括号
左右括号合法配对,即先出现左括号,再出现右括号,就可以让售票顺畅执行

可以看到,问题又变成了求解 n 的卡特兰数

(2)出栈顺序

一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?

(3)凸多边形三角划分

在一个凸多边形中,通过若干条互不相交的对角线,把这个多边形划分成了若干个三角形。任务是键盘上输入凸多边形的边数n,求不同划分的方案数f(n)。比如当n=6时,f(6)=14。

(4)给定节点组成二叉搜索树

给定N个节点,能构成多少种不同的二叉搜索树。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/774250.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据可视化在智慧园区中能够发挥什么作用?

在智慧园区的建设和管理中,数据可视化技术正发挥着越来越重要的作用。通过数据可视化,园区管理者可以将大量复杂的数据转化为直观、易懂的图形和图表,从而更高效地监控和分析园区内的各种动态。数据可视化不仅能够实时展示园区内的人员流动、能耗情况、安全状况等关键指标,…

【学习笔记】并查集应用

【学习笔记】并查集应用 以 NOI 2001 食物链 为例の两种并查集用法。 题目大意: 规定每只动物有且仅有三种可能的种类 \(A、B、C\),\(A\) 会吃 \(B\),\(B\) 会吃 \(C\),\(C\) 会吃 \(A\)。 给定 \(N\) 只动物,\(K\) 个语句。每个语句有如下两种可能的表达:1 X Y 表示动物…

《NET CLR via C#》---第三章(运行时解析类型引用)

"运行时"解析类型引用首先在"C:\Users\LH89\source\repos"目录下,新建Console1工程(C#控制台)实现简单的代码,并编译为程序集(假定名为Program.exe)using System;public class Program {static void Main(string[] args){Console.WriteLine("Hell…

2024“钉耙编程”中国大学生算法设计超级联赛(3) 1005 数论

题意:分析: 远看数论题,实则是道数据结构。 记 \(f_{i}\) 表示 \(r_{k}=i\) 的方案数,\(g_{i}\) 表示 \(l_{1}=i\) 的方案数,那么运用简单容斥,可得: \[ans_{x} = (\sum_{i=1}^{n} f_{i}) - ((\sum_{i=1}^{x-1}f_{i})+1) \times ((\sum_{i=x+1}^{n}g_{i})+1)+1 \]先考虑…

金蝶云星空历史库存信息批量计算生成

一、业务背景今天是2024年07月30日,系统2024年01月01日启用,导入初始库存。 二、需求背景需要快速查询库存组织=供应链中心下,某仓库某物料的库存数。后面还需要按照过去时间范围查询每一天的库存量以监控变化。 三、参考《库存汇总表》《库存余额》《库存账龄分析》《物料收…

使用 useSeoMeta 进行 SEO 配置

title: 使用 useSeoMeta 进行 SEO 配置 date: 2024/7/30 updated: 2024/7/30 author: cmdragon excerpt: 摘要:本文介绍了Nuxt3中的useSeoMeta组合函数,用于简化和优化网站的SEO配置。通过这个工具,开发者可以在Nuxt3项目中方便地设置页面元标签,包括标题、描述以及Open …

史上最便宜的服务器

史上最便宜的服务器:免费空间 10米永久使用,不过空间容量只有100M 提示:不是广告,有时候需要用的时候找老半天,干脆做个随笔记录

格式举例

文章目录a markdown unordered list which will be replaced with the toc, * 号前面和后面需要有个空格。文本 这是一个段落,我要把它设置为蓝色,只需在前面的标签上嵌入style属性即可,style用于内联css。 to bold text, use <strong>. to italicize text, use <e…

代码随想录二刷(链表章节)

代码随想录二刷(链表章节)链表就是通过指针串联在一起的线性结构,每个节点都是由一个数据域和指针域(存放下一个节点的指针)。 双链表就是每个节点中既有指向前一个节点的,也有指向后一个节点的。循环链表就是把头和尾连起来。性能分析如下:下面来看下链表的具体题目: Leet…