• 卡特兰数 codevs 1086 栈


    1086 栈

     

    2003年NOIP全国联赛普及组

     时间限制: 1 s
     空间限制: 128000 KB
     题目等级 : 黄金 Gold
     
     
    题目描述 Description

    栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。

    栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈)。

    栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙

    宁宁考虑的是这样一个问题:一个操作数序列,从1,2,一直到n(图示为1到3的情况),栈A的深度大于n。

    现在可以进行两种操作,

    1.将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的push操作)

    2. 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的pop操作)

    使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下图所示为由1 2 3生成序列2 3 1的过程。(原始状态如上图所示) 。

    你的程序将对给定的n,计算并输出由操作数序列1,2,…,n经过操作可能得到的输出序列的总数。

    输入描述 Input Description

    输入文件只含一个整数n(1≤n≤18)

    输出描述 Output Description

    输出文件只有一行,即可能输出序列的总数目

    样例输入 Sample Input

    3

    样例输出 Sample Output

    5

     1 #include<iostream>
     2 long long f[20];
     3 using namespace std;
     4 int main()
     5 {
     6     int n;
     7     cin>>n;
     8     f[0]=1;f[1]=1;
     9     for(int i=2;i<=n;++i)
    10     {
    11         for(int j=0;j<=i-1;j++)
    12            f[i]+=f[j]*f[i-j-1];
    13     }
    14     cout<<f[n];
    15     return 0;
    16 }
  • 相关阅读:
    [转载]数据类型和Json格式 Joe
    为页面去掉下划线
    基于Spring,struts,hibernate的JYazd仿yazd及jivejdon
    tomcat下建立虚拟目录
    用例建模指南
    王老师好,学生请教个设计上的问题
    博客第一个处女作,顺便测试一下
    自定义可以和with一起工作的类
    boost cpu_timer
    静态初始化的相依性
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5517243.html
Copyright © 2020-2023  润新知