牛客网算法学习笔记-卡特兰数相关

原创 2016年06月01日 16:54:08

说实话,卡特兰数我自己基本没什么深刻的理解,只能做一些相关的简单的题目而已。所以这里只记录题目和代码。


n个数进出栈的顺序有多少种?假设栈的容量无限大。

给定一个整数n,请返回所求的进出栈顺序个数。保证结果在int范围内。

测试样例:
1
返回:1


2n个人排队买票,n个人拿5块钱,n个人拿10块钱,票价是5块钱1张,每个人买一张票,售票员手里没有零钱,问有多少种排队方法让售票员可以顺利卖票。

给定一个整数n,请返回所求的排队方案个数。保证结果在int范围内。

测试样例:
1
返回:1

求n个无差别的节点构成的二叉树有多少种不同的结构?

给定一个整数n,请返回不同结构的二叉树的个数。保证结果在int范围内。

测试样例:
1
返回:1


class Stack {
public:
    int countWays(int n) {
        // write code here
        int result = 1;
        for(int i = n+1;i<=2*n;i++){
            result = result *i;
        }
        for(int i = 1;i<=n;i++){
            result = result/i;
        }
        result = result /(n+1);
        return result;
    }
};


12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

给定一个偶数n,请返回所求的排列方式个数。保证结果在int范围内。

测试样例:
1
返回:1
不会写。没看出是卡特兰数

别人家的代码:

class HighAndShort {
public:
    int countWays(int n) {
        // write code here
        if(n%2)
            n--;
        int res=1;
        for(int i=n;i>n/2;i--)
            res*=i;
        for(int i=n/2;i>1;i-- )
            res/=i;
        return res/(n/2+1);
    }
};


有n个信封,包含n封信,现在把信拿出来,再装回去,要求每封信不能装回它原来的信封,问有多少种装法?

给定一个整数n,请返回装发个数,为了防止溢出,请返回结果Mod 1000000007的值。保证n的大小小于等于300。

测试样例:
2
返回:1
class CombineByMistake {
public:
    int countWays(int n) {
        // write code here
        long a = 0;
        long b = 1;
        if(n==1)
            return a;
        if(n==2)
            return b;
        int result;
        for(int i = 3;i<=n;i++){
            result = (i - 1)*(a + b) %1000000007;
            a = b;
            b = result;
        }
        return result;


    }
};

【牛客网】算法编程题汇总

1.优雅数: 小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。 例如:半径的平方如...
  • cChenLiang
  • cChenLiang
  • 2017年05月20日 11:25
  • 944

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

卡特兰数的递推公式是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) 可以描述的问...
  • zz_ylolita
  • zz_ylolita
  • 2016年04月05日 23:59
  • 914

卡特兰数的数学解释和分析

关于卡特兰数,我也是最近才接触到,是在一份笔试的代码题里,题目大致是这样的:    16个人去饼店买饼,其中8个人身上有5块钱,8个人身上有10块钱,饼5块钱一个,老板一开始没有零钱可找,问有多少种...
  • ATM246800
  • ATM246800
  • 2016年09月25日 22:56
  • 1624

卡特兰数的证明及应用

Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h(n-1) +h(2)*h(n-2) + ... + h(n-1)h(1),n>=2该递推关系的解为:h(n...
  • a2796749
  • a2796749
  • 2015年08月12日 09:22
  • 1579

卡特兰数(Catalan)高精度实现

卡特兰数也算是一个应用广泛的数列,它能够解决一系列问题(括号化,出栈次序,凸多边形三角划分,给定节点组成二叉搜索树问题等),我们以括号化题目为例:      CODEVS[5112]: 题目描述...
  • Diddish
  • Diddish
  • 2016年10月19日 16:54
  • 401

卡特兰数——Catalan数(从一道腾讯笔试题引发的学习和思考)

卡特兰数——Catalan数(从一道腾讯笔试题引发的学习和思考)
  • u012333003
  • u012333003
  • 2014年04月16日 09:14
  • 2245

牛客网刷题笔记

本来想在牛客网上刷完一道在线编程题后就写以下体会笔记,可是找了半天都没找到在哪里写东西,无奈,我就只好来CSDN上写了,只是想写而已,刚开始写,肯定会很不理想,但是没关系,慢慢写吧,总会有提高的。 ...
  • liu_sheng_1991
  • liu_sheng_1991
  • 2016年06月15日 10:40
  • 1011

卡特兰数及栈出栈顺序问题的相关研究

一、卡特兰数 卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。在这里...
  • jianghuihong2012
  • jianghuihong2012
  • 2014年04月16日 09:55
  • 965

卡特兰数已知递推序列求通项

转自:http://blog.csdn.net/dlyme/article/details/2532831   【Catalan数——卡特兰数】 一.Catalan数的定义令h(1)=1,Cat...
  • hemeinvyiqiluoben
  • hemeinvyiqiluoben
  • 2013年09月07日 15:18
  • 3767

卡特兰数相关问题总结

一、什么是Catalan数 说到Catalan数,就不得不提及Catalan序列,Catalan序列是一个整数序列,其通项公式是 递推公式是 C(n) = C(1)*C(n-1) + C(2...
  • JIEJINQUANIL
  • JIEJINQUANIL
  • 2016年08月08日 17:11
  • 1143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:牛客网算法学习笔记-卡特兰数相关
举报原因:
原因补充:

(最多只允许输入30个字)