卡特兰数(卡塔兰数)


另附图一张:

来源:百度百科

典例: hdu 2067

小兔的棋盘


Problem Description


小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这样的路径数有多少?小兔想了很长时间都没想出来,现在想请你帮助小兔解决这个问题,对于你来说应该不难吧!


Input


每次输入一个数n(1<=n<=35),当n等于-1时结束输入。


Output


对于每个输入数据输出路径数,具体格式看Sample。

Sample Input

1
3
12
-1

Sample Output

1 1 2
2 3 10
3 12 416024

题解:这规律也太忒么难找了⑧(只怪智商太低了),而且后面几个容易找到的递推公式又溢出越界了,只有第一个递推公式才不会WA。。。。。。
于是代码如下(其中最终答案需乘2):

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{ll h[40];memset(h,0,sizeof(h));h[0]=1;h[1]=1;for(int i=2;i<=35;i++){for(int j=0;j<=i-1;j++){h[i]+=h[j]*h[i-1-j];}}int t=0;int n;while(~scanf("%d",&n)){t++;if(n==-1)break;printf("%d %d %lld\n",t,n,h[n]*2);}return 0;
}

卡特兰数的应用(实际上都是递推等式的应用):

1、矩阵连乘
P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案? (h(n)种)

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

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

4、给定节点组成二叉搜索树
给定N个节点,能构成多少种不同的二叉搜索树?(能构成h(N)个

卡特兰数(卡塔兰数)相关推荐

  1. 卡特兰数 卡塔兰数 概念 代码实现 模型分析全集

    特别鸣谢 参考1 参考2 参考3 概念 情境导入 一个栈(无穷大)的进栈序列为1,2,3,-,n,有多少个不同的出栈序列? 可以形象化地转化为括号问题,更好理解,进栈是(,出栈是),下面为n=3的全部 ...

  2. 卡塔兰数(Catalan Number)--动态规划(Dynamic Programming)

    -卡塔兰数是组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡特兰(1814–1894)命名.历史上,清朝数学家明安图(1692年-1763年)在其<割圜密率捷法> ...

  3. 卡塔兰数用于求解不同形态的二叉树的数目,题目选自CS61A2021 LAB9 Q3: Number of Trees

    完全二叉树是一种每个节点都有2个分支或0个分支,但从来没有1个分支的树. 编写一个函数,返回恰好有n个叶结点的唯一完整二叉树结构的数目. 对于那些对组合学感兴趣的人来说,这个问题确实有一个封闭形式的解 ...

  4. C语言实现卡塔兰数catalan(附完整源码)

    实现卡塔兰数catalan 实现卡塔兰数catalan完整源码(定义,实现,main函数测试) 实现卡塔兰数catalan完整源码(定义,实现,main函数测试) #include <stdio ...

  5. Catalan卡塔兰数

    卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项公式为  另类递归式:  h(n)=((4*n- ...

  6. 【卡塔兰数】LeetCode 96. Unique Binary Search Trees

    LeetCode 96. Unique Binary Search Trees 本博客转载自:http://www.cnblogs.com/grandyang/p/4299608.html Solut ...

  7. 卡塔兰数(Catlan)

    refernce: http://zh.wikipedia.org/wiki/%E5%8D%A1%E5%A1%94%E5%85%B0%E6%95%B0 卡塔兰数是组合数学中一个常在各种计数问题中出现的 ...

  8. leetcode(96)不同的二叉搜索树——卡塔兰数

    题目描述 给定一个整数 n,求以 1 - n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: 给定 n = 3, 一共有 5 种不同结构的二叉搜索树:1 3 3 2 1\ / ...

  9. 洛谷P1722 矩阵Ⅱ (卡塔兰数)

    洛谷P1722 矩阵Ⅱ 卡塔兰数 题面 思路 代码 题面 给定一个1*(2n)的矩阵.现让你放入一样多的红色算筹和黑色算筹,使对于所有的i(1<=i<=2n),使第1~i格中红色算筹个数大 ...

最新文章

  1. 2021年传感器行业的机遇与风险 | 深度思考
  2. 【 FPGA 】Xilinx FPGA器件命名意义?
  3. X264码率控制流程分析
  4. CAS Client 3.2.1 配置详解
  5. 解决org.apache.hadoop.io.nativeio.NativeIOException: 当文件已存在时,无法创建该文件。
  6. 逻辑性最强的React Native环境搭建与调试
  7. Alexa与小娜结盟,智能语音助手该呼朋引伴还是独自前行?
  8. 10月份中国发货!华为Mate X这次真的没跑了
  9. linux系统数据文件和信息--unix环境高级编程读书笔记
  10. 什么原因导致MacBook Pro过热?如何解决这一问题?
  11. 十大网络安全策略 打造坚固的内网
  12. High Score
  13. 学生上课睡觉班主任怎么处理_学生上课睡觉,老师该怎么处理?
  14. P5322 [BJOI2019]排兵布阵
  15. 给大家普及呼叫中心和电话营销系统相关知识--中继线路
  16. GitHub上最火的Android开源项目整理
  17. jQuery+PHP实现的砸金蛋中奖程序
  18. 组合数学4-全排列生成算法
  19. 【c语言】结构体详解 | 结构体数组/指针
  20. [CIKM 2019]Balance in Signed Bipartite Networks

热门文章

  1. 算24游戏c语言程序报告,c程序课程设计报告(24点游戏).doc
  2. 【开发工具】【sysrq】魔术键(sysRq)的使用
  3. 如何解决超大规模软件系统
  4. solenovex 微软MVP
  5. linux编译lammps (intel mpi) + Voronoi + Colvars package的安装
  6. matlab中ind2sub函数,Python中的MATLAB ind2sub等价
  7. 单片机和计算机特点,单片机的特点
  8. tp5框架判断手机端与pc端
  9. zabbix 监控linux日志,zabbix 监控交换机日志
  10. 生日礼物(背包问题)