Bailian4077 出栈序列统计【卡特兰数】(vijos P1122)
问题链接:vijos P1122 出栈序列统计。
出栈序列统计
- 总时间限制:
- 100ms
- 内存限制:
- 64kB
- 描述
- 栈是常用的一种数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列。你已经知道栈的操作有两种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出。现在要使用这两种操作,由一个操作序列可以得到一系列的输出序列。请你编程求出对于给定的n,计算并输出由操作数序列1,2,…,n,经过一系列操作可能得到的输出序列总数。
- 输入
- 就一个数n(1≤n≤15)。
- 输出
- 一个数,即可能输出序列的总数目。
- 样例输入
-
3
- 样例输出
-
5
- 提示
-
先了解栈的两种基本操作,进栈push就是将元素放入栈顶,栈顶指针上移一位,等待进栈队列也上移一位,出栈pop是将栈顶元素弹出,同时栈顶指针下移一位。
用一个过程采模拟进出栈的过程,可以通过循环加递归来实现回溯:重复这样的过程,如果可以进栈则进一个元素,如果可以出栈则出一个元素。就这样一个一个地试探下去,当出栈元素个数达到n时就计数一次(这也是递归调用结束的条件)。
NOIP2003普及组
问题链接:Bailian4077 vijos P1122 出栈序列统计
问题简述:(略)
问题分析:这个问题卡特兰数计算问题。
卡特兰数计算公式是:
程序说明:(略)
题记:(略)
参考链接:(略)
AC的C语言程序如下:
/* Bailian4077 vijos P1122 出栈序列统计 */#include <stdio.h>int main(void)
{int n, ans, i;scanf("%d", &n);ans = 1;for(i=1; i<=n; i++)ans = 2 * (2 * (i - 1) + 1) * ans / (i + 1);printf("%d\n", ans);return 0;
}
Bailian4077 出栈序列统计【卡特兰数】(vijos P1122)相关推荐
- 出栈顺序 与 卡特兰数(Catalan)的关系
一,问题描述 给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?如何输出所有可能的出栈序列? 比如入栈序列为:1 2 3 ,则出栈序列一共有五种,分别如下:1 2 3.1 3 2 ...
- 出栈序列统计—中学高级本
关于栈的应用拓展 栈是常用的一种数据结构,有n令元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列.你已经知道栈的操作有两·种:push和pop,前者是将一个元素进栈,后者是将栈顶元素弹出.现在要使用这 ...
- 卡特兰数问题——一个栈(无穷大)的进栈序列为1,2,3,…,n,有多少个不同的出栈序列?
一个栈(无穷大)的进栈序列为1,2,3,-,n,有多少个不同的出栈序列? 常规分析 首先,我们设f(n)=序列个数为n的出栈序列种数.(我们假定,最后出栈的元素为k,显然,k取不同值时的情况是相互独立 ...
- 栈 - 关于出栈序列,判断合法的出栈序列
文章目录 1 引例 2 做题方法 3 原因 3.1 选项D(4 3 1 2)的模拟 1 引例 (例)设栈的入栈序列是 1 2 3 4,则下列不可能是其出栈序列的是( ). A. 1 2 4 3 B. ...
- 序列元素IT面试题——判断合法出栈序列
本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 在技巧笔试口试上,我们常常会碰到这样一类题型,如给你一个入栈序列,然后再让你判断几个序列是否有可能为它的出栈序列,如: 入栈序 ...
- 详解+G - 数据结构实验之栈与队列七:出栈序列判定
理解: 出入栈规律之一,如果前面有一个比较大的数,后面有连续的递增顺序,递增顺序>=2个小于前面比较大的数,那么此出栈顺序不可能实现.比如4,1,2,3,5. 思路:输入一个数,然后不断按照顺序 ...
- 给定入栈序列,判断一个串是否为出栈序列
剑指offer22:给定入栈序列,判断一个串是否为出栈序列 public static boolean isOutStackSequence(int[] Spush, int[] Spop) {if ...
- PAT甲级1051 Pop Sequence:[C++题解]模拟栈、判断序列是否是合法的出栈序列
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 题意:将1~N压栈,判断给定序列是否是合法的出栈序列. 对于序列1~N中的每个值i,先将其压入栈.然后对于它就有两种处理方法:要么压 ...
- 数据结构实验之栈与队列七:出栈序列判定
Description 给一个初始的入栈序列,其次序即为元素的入栈次序,栈顶元素可以随时出栈,每个元素只能入栈依次.输入一个入栈序列,后面依次输入多个序列,请判断这些序列是否为所给入栈序列合法的出栈序 ...
最新文章
- 用Apache Ignite实现可扩展的数据网格
- angular5 httpclient的示例实战
- 2020年 第11届 蓝桥杯 Java C组 省赛真题详解及小结【第1场省赛 2020.7.5】
- HDU - 6992 Lawn of the Dead 线段树 + 思维
- java 线程 交给spring_浅谈Java中spring 线程异步执行
- Emscripten 单词_极光单词独创多种学习方法助您高效背单词
- .NET环境下水晶报表使用总
- 百度之星作为座位调整java_百度之星2006年初赛 座位调整
- .vimrc示例文件
- 计算机网络rip工作原理,12. 小型网络 RIP 协议工作原理
- 不能创建对象qmdispatch_关于系统弹出错误:429 , ActiveX 部件不能创建对象 的解决方法...
- Arduino相关语法和函数
- excel图表上x轴y轴怎么设置的教程介绍
- 已解决The method is not allowed for the requested URL.
- 【PHP】PHP使用PHPExcel生成Excel表格文件(附带随机生成英文名函数)
- 爬虫 使用python+requests模块爬取12306网站的车次信息
- 《keep studying》————《持续学习》英译汉【istrangeboy精品英文励志短文系列】
- 无乐不作android手机版,酷狗音乐9.4.4版本
- USNews大学排名遭美国计算机研究学会怒怼,指排名荒谬要求撤回
- JAVA毕业设计Web网上购书后台管理系统计算机源码+lw文档+系统+调试部署+数据库
热门文章
- 关于用C#编写ActiveX控件1
- linux c 数字变字符串,Linux C 知识 char型数字转换为int型 int型 转换为Char
- Java定时任务中间表,mysql 通过定时任务更新中间表
- postbody传参_java 测试post请求 在body里面传递参数怎么设置,怎么接收
- school_vue操作记录
- yum提示Another app is currently holding the yum lock; waiting for it to exit...处理办法
- mysql当执行delete语句时备份_mysql中,执行delete语句时出现Lock wait timeout exceeded问题...
- oracle sequence 应用,oracle应用之使用sequence批量写数据
- socket()编程简介
- OpenCV案例(三): 玉米颗粒计数