题意:将1~2n个数按照顺时针排列好,用一条线将两个数字连接起来要求:线之间不能有交点,同一个点只允许被连一次。

最后问给出一个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)=1*1+1*1=2               h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5
另类递推式:        h(n)=h(n-1)*(4*n-2)/(n+1);
递推关系的解为: h(n)=C(2n,n)/(n+1) (n=0,1,2,...)
递推关系的另类解为:    h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)

一些方面的应用:

1. 括号化:矩阵连乘:P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n-1)种)
2.一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?
3.给定n个点求能组成的二叉树所有总数。
4. 凸多边形三角划分(任意两顶点之间的连线必能相交),求有多少中分割的方法(类似:在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数) 
5. n层阶梯切割为n个矩形的切割方法总数

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long  ll;
const int maxn = 1000000;
const int moder = 1000000;
int a[105][100];
void catalan()
//求卡特兰数,a[i][j]存储的是第i个逆序(高位在后)的卡特兰数(从0开始),且未对高位0进行处理
{int i, j, len, carry, temp;a[1][0] = 1;len = 1;for(i = 2; i <= 100; i++){for(j = 0; j < len; j++) //乘法a[i][j] = a[i-1][j]*(4*(i-1)+2);carry = 0;for(j = 0; j < len; j++) //处理相乘结果
        {temp = a[i][j] + carry;a[i][j] = temp % 10;carry = temp / 10;}while(carry) //进位处理
        {a[i][len++] = carry % 10;carry /= 10;}carry = 0;for(j = len-1; j >= 0; j--) //除法
        {temp = carry*10 + a[i][j];a[i][j] = temp/(i+1);carry = temp%(i+1);}}
}
int main()
{int n;catalan() ;while(scanf("%d",&n) ,n != -1){int flag = 0 ;for(int i = 99;i >= 0;i--)//处理高位
        {if(a[n][i] != 0)flag = 1;if(flag)printf("%d",a[n][i]);}printf("\n");}return 0;
}

————不是很懂

转载于:https://www.cnblogs.com/cunyusup/p/8587028.html

nyoj164——卡特兰数(待填坑)相关推荐

  1. 从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南

    转自:从<编程之美>买票找零问题说起,娓娓道来卡特兰数--兼爬坑指南 引子: 大约两个月前,我在练习一些招聘的笔试题中,有一道和卡特兰数相关.那时还没来得及开始仔细看<编程之美> ...

  2. 卡特兰数Catalan

    1.卡特兰数的性质 其实重要的就两个公式:1和3. 公式1是卡特兰数的通项公式. 公式2是卡特兰数的递归公式.注意递推公式是C n+1=- 通常是发现问题可以用卡特兰数的递推公式来解决,从而想到卡特兰 ...

  3. Catalan数——卡特兰数

    今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来 后来查了下,原来是Catalan数.悲剧啊,现在整理一下 Catalan数--卡特兰数] 一.Catalan数的定义令h( ...

  4. 卷积神经网络「失陷」,CoordConv来填坑

    卷积神经网络「失陷」,CoordConv来填坑 作者:Rosanne Liu等 卷积神经网络拥有权重共享.局部连接和平移等变性等非常优秀的属性,使其在多种视觉任务上取得了极大成功.但在涉及坐标建模的任 ...

  5. P3200-[HNOI2009]有趣的数列【卡特兰数】

    正题 题目链接:https://www.luogu.com.cn/problem/P3200 题目大意 求一个长度为2∗n2*n2∗n的排列要求 奇数位和偶数位分别递增 相邻的偶数位大于奇数位 解题思 ...

  6. [集训队作业2018] count(笛卡尔树,生成函数,卡特兰数)

    传送门 什么情况下两序列同构 对于两序列A[1,n],B[1,n]A[1,n],B[1,n]A[1,n],B[1,n],设fA(1,n)=pa,fB(1,n)=pbf_A(1,n)=p_a,f_B(1 ...

  7. python符号格式化设置区间_[Python3 填坑] 001 格式化符号 格式化操作符的辅助指令...

    1. print( 坑的信息 ) 挖坑时间:2019/01/08 明细 坑的编码 内容 Py004-6 Python 格式化符号 & 举例 Py004-7 Python 格式化操作符的辅助指令 ...

  8. 卡特兰数 默慈金数 默慈金三角形 反射原理

    卡特兰数 公式 递推式: f ( n ) = ∑ f ( i ) ∗ f ( n − i − 1 ) f(n) = ∑f(i) * f(n-i-1) f(n)=∑f(i)∗f(n−i−1) 0 ≤ i ...

  9. 一个机械研究生在计算机与机械之间的徘徊与思考-(下)之填坑

    现已研三(上 ),自问自答一下当初问机械研究生(智能制造方向)到底该学什么,主力该放在学术研究上还是系统开发上?先说现状,已签工作(华为IE工程师),也拿了国奖.研一上发一篇小论文,研一下一篇,研二上 ...

最新文章

  1. VUE中使用Echarts绘制地图迁移
  2. .NET开发人员值得关注的七个开源项目
  3. java 数值区间_java 各数据类型数值范围
  4. python百度云资源-python学习资源--百度云
  5. **kwargs特有的作用
  6. conda command not found ubuntu
  7. 你可能不知道的关于 Git stash 的技巧
  8. Java讲课笔记29:Swing入门
  9. 分布式技术追踪 2018年第二期
  10. 揭秘全球最大网站 Facebook 背后应用软件
  11. FPM一:简单的road map(GAF)
  12. 怎么判断笔记本显卡性能?笔记本显卡和台式机显卡性能差距大吗
  13. 借助计算机音乐,计算机音乐制作在高校作曲教学中的应用
  14. 判断是不是数字 Java_java如何判断是不是数字
  15. 【Android+Kotlin】自适应CoordinatorLayout,AppBarLayout,CollapsingToolbarLayout与Palette
  16. 微信小程序wepy框架快速入门
  17. 2023年安徽省职业院校“磐云杯”网络安全竞赛任务书
  18. CSS教程--CSS字体
  19. 前端关于自己模拟接口做测试
  20. 华润MMX链上云的简介

热门文章

  1. 张恩民 php,php张恩民PHP中ltrim与rtrim去除左右空格及特殊字符实例
  2. 方根法公式_仓储管理笔记之库存分析法:ABC分析法、区域合并法......
  3. PAT_B_1003_Java(20分)
  4. linux mysql ibd_MySQL:如何从ibd文件中恢复数据
  5. YUV420数据格式
  6. C++中const迭代器 和 const_iterator的区别
  7. C# v7.0版本中的local function
  8. TensorFlow:实战Google深度学习框架(二)实现简单神经网络
  9. TensorFlow 2.X中的动手NLP深度学习模型准备
  10. 利用VLC搭建组播流服务器