卡特兰数 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 }
时间: 2024-10-07 13:21:04

卡特兰数 codevs 1086 栈的相关文章

codevs 1086 栈 2003年NOIP全国联赛普及组

题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈.宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙 宁宁考虑的是这样一个问题:一个操作数序列,从1,2,一直到n(图示为1到3的情况),栈A的深度大于n. 现在可以进行两种操作, 1.将一个数,从操

codevs 1086 栈(Catalan数)

题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈.宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙 宁宁考虑的是这样一个问题:一个操作数序列,从1,2,一直到n(图示为1到3的情况),栈A的深度大于n. 现在可以进行两种操作, 1.将一个数,从操

CSU 1320 Scoop water (卡特兰数)

1320: Scoop water Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 494  Solved: 129[Submit][Status][Web Board] Description zzy今天刚买了两个水瓢A和B,容量都是为1升,童心未泯的他打算用这个水瓢来玩游戏. 首先zzy准备了一个容量可看作无穷大的水缸,刚开始水缸是空的,然后用水瓢A往水缸里加水,用水瓢B把水缸里的水舀出去,当使用 水瓢B把水舀出去时水缸里必须要至少有1升的水.这

UVA - 1478 Delta Wave (大数+卡特兰数)

Description A delta wave is a high amplitude brain wave in humans with a frequency of 1 - 4 hertz which can be recorded with an electroencephalogram (EEG) and is usually associated with slow-wave sleep (SWS). - from Wikipedia The researchers have dis

卡特兰数相关

这一块一直学的不太好,基本停留在看到题可以看出来是个卡特兰数,但进一步的思考和推导,对我来说就变得困难起来,所以今天趁有时间,复习一下 前言 卡特兰数多用在组合数学的计数问题中,多是那种有两种选择,也就是求有限制的方案数 公式 $h(n)=h(0){\times}h(n-1)+h(1){\times}h(n-2)+{\cdots}+h(n-1){\times}h(0)$ $h(n)=\frac{h(n-1){\times}(4{\times}n-2)}{n+1}$ $h(n)=C_{2{\tim

出栈顺序(卡特兰数)

题目描述: 按照1,2,...,n-1,n的顺序入栈,问可以得到多少种出栈序列.如n=3时有1 2 3,1 3 2,2 1 3,2 3 1,3 2 1共5种出栈序列. 解题思路: 设f(n)为n个数时的方案数. 可知 f(0)=1: f(1)=1: f(2)=2:  f(3)=5: 当n=4时 : F1    F2    F3    F4 1 2 3 4  //四种状态分别标记为F1,F2,F3,F4 若F1 位于一号位置 则之前的数字出栈顺序的情况数为F(0),在一号位置后的数字出栈顺序的情况

出栈顺序 与 卡特兰数(Catalan)的关系

一,问题描述 给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?如何输出所有可能的出栈序列? 比如入栈序列为:1 2 3  ,则出栈序列一共有五种,分别如下:1 2 3.1 3 2.2 1 3.2 3 1.3 2 1 二,问题分析 先介绍几个规律: ①对于出栈序列中的每一个数字,在它后面的.比它小的所有数字,一定是按递减顺序排列的. 比如入栈顺序为:1 2 3 4. 出栈顺序:4 3 2 1是合法的,对于数字 4 而言,比它小的后面的数字是:3 2 1,且这个顺序是递减顺序.

[Catalan数]1086 栈、3112 二叉树计数、3134 Circle

1086 栈 2003年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈.宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙 宁宁考虑的

[NOIP2003]栈 题解(卡特兰数)

[NOIP2003]栈 Description 宁宁考虑的是这样一个问题:一个操作数序列,从1,2,一直到n(图示为1到3的情况),栈A的深度大于n. 现在可以进行两种操作: 1.将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的push操作) 2.将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的pop操作) 使用这两种操作,由一个操作数序列就可以得到一系列的输出序列; 你的程序将对给定的n,计算并输出由操作数序列1,2,-,n经过操作可能得到的输出序列的总数. Solution