POJ 1363 Rails(栈)
思路:将出车站的顺序存入数组train,由于入车站的顺序是固定的,为1~N,所以用P表示进站的车,初始为1。
接下来举例说明吧:
原来入站顺序: 1 2 3 4 5
读入的出战顺序: 3 4 2 5 1
按照train数组的顺序来执行,
1.一开始p=1,i=1:
p与train[i]=3不相等,将p(1)入栈,p++;再比较不相等,将p(2)入栈,p++;
p=train[3],则i++,p++;
2.i=2:
先比较train[i]与栈顶元素2是否相同,不相同,则与p比较。
train[i]=4与p(4)相等,i++,p++(5);
3.i=3:
先比较train[i]=2与栈顶元素2是否相同,相同,那么2出栈,i++;
4.i=4:
先比较train[i]=5与栈顶元素1是否相同,不同,则与p(5)比较,相同,则i++,p++;
5.i=5:
先比较train[i]=1是否与栈顶元素相同,相同,i++,p++。
执行结束。
途中如果遇到某一元素train[i]与栈顶元素不相同,且与之后所有未入栈的元素不相等,说明不能按此顺序出车站,即为No。
#include <iostream>
#include <stdio.h> using namespace std;
const int maxn=;
int stacks[maxn]; //数组模拟栈
int train[maxn]; //存储读入的火车出站顺序
int tail,length; //栈的尾指针、长度
int main() {
int n;
while(scanf("%d",&n)!=EOF) {
if(n==)
break;
while(scanf("%d",&train[])!=EOF) {
if(train[]==)
break;
tail=;
length=;
int p=;
for(int i=; i<=n; i++)
scanf("%d",&train[i]);
int flag=;
for(int i=; i<=n; i++) {
int mark=; //若mark=1,表明train[i]可以按给的顺序出战
//先比较与栈顶元素是否相同
if(length> && train[i]==stacks[tail-]) {
mark=;
tail--;
length--;
}
//接着和未进入栈的元素比较
else {
while(p<=n) {
if(train[i]!=p) {
stacks[tail]=p;
tail++;
p++;
length++;
} else {
mark=;
p++;
break;
}
}
}
//若mark=0,表示train[i]即不与栈顶元素相同,也不与未进入栈的元素相同,即不合法,为No。
if(!mark) {
flag=;
break;
}
}
if(flag)
printf("Yes\n");
else
printf("No\n");
}
printf("\n");
}
return ;
}
POJ 1363 Rails(栈)的更多相关文章
- POJ 1363 Rails(栈)
题目代号:POJ 1363 题目链接:http://poj.org/problem?id=1363 题目原题: Rails Time Limit: 1000MS Memory Limit: 100 ...
- poj 1363 Rails in PopPush City &&【求堆栈中合法出栈顺序次数】
问题如下: 问题 B: Rails 时间限制: Sec 内存限制: MB 提交: 解决: [提交][状态][讨论版] 题目描述 There is a famous railway station in ...
- poj 1363 Rails (【栈的应用】 刘汝佳的写法 *学习)
Rails Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25964 Accepted: 10199 Descripti ...
- poj 1363 Rails 解题报告
题目链接:http://poj.org/problem?id=1363 题意:有一列火车,车厢编号为1-n,从A方向进站,向B方向出站.现在进站顺序确定,给出一个出站的顺序,判断出站顺序是否合理. 实 ...
- OpenJudg / Poj 1363 Rails
1.链接: http://poj.org/problem?id=1363 http://bailian.openjudge.cn/practice/1363 2.题目: Rails Time Limi ...
- POJ 1363 Rails
Rails Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21728 Accepted: 8703 Descriptio ...
- 【栈】 poj 1363
poj1363,这道题是数据结构与算法中的经典问题,给定一组进栈顺序,问栈有多少种出去的顺序. #include<stdio.h> #include <stack> #incl ...
- poj 1363 火车进站 (栈的应用)
Description There is a famous railway station in PopPush City. Country there is incredibly hilly. Th ...
- Poj 3250 单调栈
1.Poj 3250 Bad Hair Day 2.链接:http://poj.org/problem?id=3250 3.总结:单调栈 题意:n头牛,当i>j,j在i的右边并且i与j之间的所 ...
随机推荐
- Java 字符流实现文件读写操作(FileReader-FileWriter)
Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...
- Silverlight引用WebService时取消对ServiceReferences.ClientConfig文件的依赖
做过Silverlight项目的朋友都知道一般来说我们在Silverlight项目中都需要引用WebService或是WCF,引用的方式是在Visual Studio窗口中通过“添加服务引用”来添加引 ...
- C++ 11 之学习总结
感慨时间过的好快,C++ 11出来都5年了,现在才开始学习,但为时也不晚: 主要是网上及身边的朋友大肆宣扬C++ 11的某些优化,弄得别人心里痒痒的,所以就花了3天学习了点基本知识,相对于整个C++ ...
- c++11:copy_n
copy_n: Copies exactly count values from the range beginning at first to the range beginning at resu ...
- CSS简写及如何优化技巧
CSS简写就是指将多行的CSS属性简写成一行,又称为CSS代码优化或CSS缩写.CSS简写的最大好处就是能够显著减少CSS文件的大小,优化网站整体性能,更加容易阅读. 下面介绍常见的CSS简写规则: ...
- ckeditor增加上传图片的功能
1.配置config.js开启图片上传选项卡. CKEDITOR.editorConfig = function( config ) { config.filebrowserImageUploadUr ...
- lnmp下用phpize动态安装PHP模块/扩展(不需要重装PHP)
安装前 安装前建议先执行 /usr/local/php/bin/php -m (此命令显示目前已经安装好的PHP模块)看一下,要安装的模块是否已安装.然后下载当前PHP版本的源码并解压. 本文以ima ...
- 为Eclipse设置背景色
1:打开Eclipse,在菜单栏找到Help—>Install new software.. 2:在打开的Work with中输入: Update Site - http://eclipse-c ...
- RTC搭建android下三层应用程序访问服务器MsSql-客户端
android下stringgrid已知问题: 通过点击时获取对应行的值有问题,在win下调试正常,在android下出现定位不准 二.客户端开发 1,新建工程 2,添加相关客户端控件TRtcHttp ...
- Oracle 动态视图4 V$SESSION_WAIT & V$SESSION_EVENT
一.视图V$SESSION_WAIT显示了session的当前等待事 Column Datatype Description SID NUMBER Session identifier SEQ# NU ...