zoukankan      html  css  js  c++  java
  • 特兰数列及其应用 C++

    #include <iostream>
    using namespace std;
    //卡特兰数列原理及应用
    int catalan(int n){
    
        if (n == 1)return 1;
        if (n == 2)return 1;
        int res = 0;
        for (int i = 1; i <= n - 1;i++){
            res += catalan(i)*catalan(n - i);
        }
        return res;
    
    }
    //测试函数
    int main(){
        int n;
        while (cin >> n){
    
            cout << catalan(n) << endl;
        }
        return 0;
    }

    卡特兰数列的原理及其应用场景
    令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)=c(2n-2,n-1)/n (n=1,2,3,…)
    1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, …
    1.括号化问题。
    矩阵链乘: P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,只用括号表示成对的乘积,试问有几种括号化的方案?(h(n)种)
    2.出栈次序问题。
    一个栈(无穷大)的进栈序列为1,2,3,..n,有多少个不同的出栈序列?
    类似:有2n个人排成一行进入剧场。入场费5元。其中只有n个人有一张5元钞票,另外n人只有10元钞票,剧院无其它钞票,问有多少中方法使得只要有10元的人买票,售票处就有5元的钞票找零?(将持5元者到达视作将5元入栈,持10元者到达视作使栈中某5元出栈)
    3.将多边行划分为三角形问题。
    将一个凸多边形区域分成三角形区域的方法数?
    类似:一位大城市的律师在她住所以北n个街区和以东n个街区处工作。每天她走2n个街区去上班。如果他
    从不穿越(但可以碰到)从家到办公室的对角线,那么有多少条可能的道路?
    类似:在圆上选择2n个点,将这些点成对连接起来使得所得到的n条线段不相交的方法数?

  • 相关阅读:
    2021,6,10 xjzx 模拟考试
    平衡树(二)——Treap
    AtCoder Beginner Contest 204 A-E简要题解
    POJ 2311 Cutting Game 题解
    Codeforces 990G GCD Counting 题解
    NOI2021 SDPTT D2T1 我已经完全理解了 DFS 序线段树 题解
    第三届山东省青少年创意编程与智能设计大赛总结
    Luogu P6042 「ACOI2020」学园祭 题解
    联合省选2021 游记
    Codeforces 1498E Two Houses 题解 —— 如何用结论吊打标算
  • 原文地址:https://www.cnblogs.com/leesymbol/p/13862883.html
Copyright © 2011-2022 走看看