P1044 栈——卡特兰数

题目背景

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

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

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

题目描述

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

现在可以进行两种操作,

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

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

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

(原始状态如上图所示)

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

输入输出格式

输入格式:

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

输出格式:

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

输入输出样例

输入样例#1:

3

输出样例#1:

5
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 5000
using namespace std;
int n,m,ans,h[N];
int read()
{int x=0,f=1; char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=-1; ch=getchar();}while(ch<='9'&&ch>='0'){x=x*10+ch-'0'; ch=getchar();}return x*f;
}
int main()
{n=read();h[0]=1,h[1]=1;for(int i=2;i<=n;i++)for(int j=1;j<=i;j++)h[i]=h[i-j]*h[j-1]+h[i];ans=h[n];printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/z360/p/7207358.html

洛谷——P1044 栈相关推荐

  1. 洛谷 P1044 栈 [卡特兰数]

    题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即 poppop (从栈顶弹出一个元素)和 pushpush (将一个元素进栈). 栈 ...

  2. 信息学奥赛一本通 1924:【03NOIP普及组】栈 | 洛谷 P1044 [NOIP2003 普及组] 栈

    [题目链接] ybt 1924:[03NOIP普及组]栈 洛谷 P1044 [NOIP2003 普及组] 栈 [题目考点] 递推.递归 栈 [解题思路]:一维递推 设数组a,a[i]表示i个数组成的数 ...

  3. [Catalan]求解随机出栈可能数(洛谷P1044题题解,Java语言描述)

    题目要求 P1044题目链接 分析 题意就是:N个数依次进栈,可随机出栈,算一下可能的出栈序列数. 其实这个就是Catalan啊,如果数据结构与算法有一定的刷题积累的学生应该经常做这样的About栈的 ...

  4. 表达式括号匹配_洛谷1739_栈

    题目背景 你猜 题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@"作为表达式的结束符.请编写一个程序检查表达式中的左右圆括号是否匹 ...

  5. [洛古]P1044 栈

    题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈). 栈的重要性不言自明, ...

  6. 栈——验证栈序列(洛谷 P4387)

    题目选自洛谷P4387 是一道栈的题,能够帮助理解栈的更深层次. 题目大意就是判断序列是否可能是对应序列的出栈序列. 如何判断是不是合理的出栈序列呢? 对于序列a 我们依次和序列b来比较,如果不相同, ...

  7. 栈——括号匹配(洛谷 Uva673)

    题目选自洛谷Uva673 括号匹配是和栈有关的经典算法问题 每次入栈的时候判断栈的顶部是不是这个符号的另一半,如果是就pop并且这个符号也不入栈,如果不是就入栈.最后判断栈是否为空,如果为空,说明正确 ...

  8. 洛谷 P2186 小Z的栈函数

    洛谷 P2186 小Z的栈函数 题目 题目描述 小Z最近发现了一个神奇的机器,这个机器的所有操作都是通过维护一个栈来完成的,它支持如下11个操作: NUM X:栈顶放入X. POP:抛弃栈顶元素. I ...

  9. 二分图——洛谷P1155 双栈排序

    https://daniu.luogu.org/problem/show?pid=1155 二分图染色+模拟 1.首先考虑一个简单情况--单栈排序,显然有这样的一个事实: a[i]和a[j] 不能压入 ...

最新文章

  1. 【Spring】面向切面编程AOP
  2. matlab中中图像PSNR和SSIM的计算
  3. xStream转换XML、JSON
  4. js修改style中某个属性_JS 和 CSS 交互的 5 种方法
  5. 【Dynamics AX 6】axmodel新特性
  6. JS动态添加、删除classl类
  7. mysql安装需要注意什么意思_mysql 安装过程及注意事项
  8. 我的世界进入离开服务器消息,我的世界暂时离开状态修改 人性化设定AFK
  9. Flutter图像绘制原理深入分析
  10. Linux netstat命令详解和使用例子(显示各种网络相关信息)
  11. C++ Primer Plus学习(九)——内存模型和名称空间
  12. java编译前端_compiler Java实现的编译器前端(一直到中间代码生成)其中使用了JFLEX及CUP做Lex program /解释器 238万源代码下载- www.pudn.com...
  13. ModuleNotFoundError: No module named 'cv2' (安装cv2)
  14. 解决java:找不到符号办法
  15. 数据清洗之 数据整理
  16. java dismiss_窗口泄漏甚至在dialog.dismiss()
  17. 什么是Armbian
  18. 8.0服务器维护时间,魔兽世界8.0开服第一天遇紧急维护?网友:叫逆水寒还服务器...
  19. 毕设 JAVA.JSP网上学习答疑系统论文
  20. Python 列表解析 大文件

热门文章

  1. #1045 - Access denied for user 'root'@'localhost' (using password: NO)
  2. 白鸦三次创业反思:公司遇问题 怎么走都对(转)
  3. 【ML】【GM】【转】图模型(graphical model, GM)的表示
  4. PHP 10条有用的建议
  5. linux --- 进程调度
  6. Microsoft training Kits
  7. Aspose.Cells设置单元格格式
  8. 8张图让你一步步看清 async/await 和 promise 的执行顺序
  9. RED HAT LINUX 9.0的安装文本模式(2)
  10. 第一家公立大学支持比特币支付学费