NOIP 2003 栈
洛谷 P1044 栈
JDOJ 1291: [NOIP2003]栈 T3
题目描述
栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表。
栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈)。
栈的重要性不言自明,任何一门数据结构的课程都会介绍栈。宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙。

宁宁考虑的是这样一个问题:一个操作数序列,从1,2,一直到n(图示为1到3的情况),栈A的深度大于n。
现在可以进行两种操作,
1.将一个数,从操作数序列的头端移到栈的头端(对应数据结构栈的push操作)
\2. 将一个数,从栈的头端移到输出序列的尾端(对应数据结构栈的pop操作)
使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下图所示为由1 2 3生成序列2 3 1的过程。(原始状态如上图所示)

你的程序将对给定的n,计算并输出由操作数序列1,2,…,n经过操作可能得到的输出序列的总数。
输入
一个整数n(1< =n< =18)
输出
一个整数,即可能输出序列的总数目。
样例输入
3
样例输出
5
来源
题解:
卡特兰数我不会
如果大家想学正解请自行参考洛谷题解。
本人采用的打表出奇迹的方法。
具体代码如下。
超级简单。
大家可以借此学习一下switch判断的用法。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
switch(n)
{
case 1: printf("1");break;
case 2: printf("2");break;
case 3: printf("5");break;
case 4: printf("14");break;
case 5: printf("42");break;
case 6: printf("132");break;
case 7: printf("429");break;
case 8: printf("1430");break;
case 9: printf("4862");break;
case 10: printf("16796");break;
case 11: printf("58786");break;
case 12: printf("208012");break;
case 13: printf("742900");break;
case 14: printf("742900");break;
case 15: printf("9694845");break;
case 16: printf("35357670");break;
case 17: printf("129644790");break;
case 18: printf("477638700");break;
}
return 0;
}
当然大家也可以采用第二种方法,一维数组打表。
#include<cstdio>
using namespace std;
int a[]={0,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,742900,9694845,35357670,129644790,477638700};
int main()
{
int n;
scanf("%d",&n);
printf("%d",a[n]);
return 0;
}
NOIP 2003 栈的更多相关文章
- NOIP 2003解题报告
第一题(神经网络): 题目大意,给出一些点,每个点都有2个值,c和u,给出一些有向边,权值为w.入度为0的点的c已知,其它点的c未知,每个入度不为0的点node的c等于sum(c[k]*w[k][no ...
- noip 2003 传染病控制(历史遗留问题2333)
/*codevs 1091 搜索 几个月之前写的70分 今天又写了一遍 并且找到了错误 */ #include<cstdio> #include<vector> #define ...
- [COGS 0107][NOIP 2003] 传染病控制
107. [NOIP2003] 传染病控制 ★★★ 输入文件:epidemic.in 输出文件:epidemic.out 简单对比时间限制:1 s 内存限制:128 MB [问题背景] ...
- 【NOIP 2003】 加分二叉树
[题目链接] 点击打开链接 [算法] 树形DP即可 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 50 in ...
- NOIP 2003 乒乓球
洛谷 P1042 乒乓球 https://www.luogu.org/problemnew/show/P1042 JDOJ 1363: [NOIP2003]乒乓球 T1 https://neooj.c ...
- NOIP 2003 神经网络
洛谷 P1038 神经网络 https://www.luogu.org/problemnew/show/P1038 JDOJ 1278: [NOIP2003]神经网络 T1 https://neooj ...
- 【JOI2017春季合宿】Port Facility
http://uoj.ac/problem/356 题解 思路和\(NOIP\)双栈排序差不多. 对于两个元素,若\(l_1<l_2<r_1<r_2\)那么它们不能在一个栈里,我们连 ...
- 【算法•日更•第十期】树型动态规划&区间动态规划:加分二叉树题解
废话不多说,直接上题: 1580:加分二叉树 时间限制: 1000 ms 内存限制: 524288 KB提交数: 121 通过数: 91 [题目描述] 原题来自:NOIP 20 ...
- codevs 1086 栈 2003年NOIP全国联赛普及组
题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). ...
随机推荐
- oracle 错误 TNS-01190与oracle 登入没反应操作
1,问题描述 [oracle@node2 ~]$ lsnrctl stop LSNRCTL - Production on -MAY- :: Copyright (c) , , Oracle. All ...
- XC7K325TFFG900 Device 内部结构图
- 【转】PyQt弹出式对话框的常用方法及标准按钮类型
pyQt之弹出式对话框(QMessageBox)的常用方法及标准按钮类型 一.控件说明 QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈,且每 ...
- git add命令行添加文件、文件夹以及撤销文件add的方法
1.添加某个文件类型到暂存区,比如所有的 .html 文件. git add *.html 2.添加某个文件或者某个文件夹中的某个文件到暂存区 ,比如 index 下的 index.htm ...
- CountDownLatch 一个复杂的例子
CountDownLatch复杂点的例子 public class CountDownLatchTest2 { private static Random random = new Random(Sy ...
- 使用AtomicInteger写一个显示锁
利用了AtomicInteger的compareAndSet方法 public class CASLock { private AtomicInteger value = new AtomicInte ...
- Java学习:Junit简介
Junit简介 概述: JUnit 是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作.JUnit 可广泛用于工业和作为支架(从命令行)或IDE(如 IDEA)内单独的 ...
- 【java】javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序【解决方法】
JDK安装成功,并且配置了环境变量,java命令正常可以使用,但是javac命令提示 不是内部或外部命令,也不是可运行的程序 解决方法: 产生这个问题的原因,是因为环境变量的配置中,Path中配置使用 ...
- 14、VUE服务器渲染
1.HTML的渲染方式 1.1. 浏览器本地渲染 这种方式不会被搜索引擎获取内容,所以不利于网站的推广. 因为浏览器本地渲染是页面js通过发送ajax请求获取后台的json数据,然后生成页面内容. 爬 ...
- 11、VUE混合
1.混合的概念(mixture) 混合是以一种灵活的方式,为组件提供代码复用功能.(类似于封装) 混合对象可以包含任意的组件选项.当组件使用了混合对象时,混合对象的所有选项将被“混入”组件自己的选项中 ...