POJ 1363 Rails(栈)
2013-09-25 13:17
260 查看
思路:将出车站的顺序存入数组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。
接下来举例说明吧:
原来入站顺序: 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=1010; int stacks[maxn]; //数组模拟栈 int train[maxn]; //存储读入的火车出站顺序 int tail,length; //栈的尾指针、长度 int main() { int n; while(scanf("%d",&n)!=EOF) { if(n==0) break; while(scanf("%d",&train[1])!=EOF) { if(train[1]==0) break; tail=0; length=0; int p=1; for(int i=2; i<=n; i++) scanf("%d",&train[i]); int flag=1; for(int i=1; i<=n; i++) { int mark=0; //若mark=1,表明train[i]可以按给的顺序出战 //先比较与栈顶元素是否相同 if(length>0 && train[i]==stacks[tail-1]) { mark=1; tail--; length--; } //接着和未进入栈的元素比较 else { while(p<=n) { if(train[i]!=p) { stacks[tail]=p; tail++; p++; length++; } else { mark=1; p++; break; } } } //若mark=0,表示train[i]即不与栈顶元素相同,也不与未进入栈的元素相同,即不合法,为No。 if(!mark) { flag=0; break; } } if(flag) printf("Yes\n"); else printf("No\n"); } printf("\n"); } return 0; }
相关文章推荐
- SharePoint 2013 : The SDDL string contains an valid sid or a sid cannot be translated
- rsync:mkstemp failed:Permission denied
- Pair Project: Elevator Scheduler [电梯调度算法的实现和测试]
- 【五子棋AI循序渐进】——多线程搜索
- AIX 5.3安装SSH .
- disconnected no supported authentication methods available(server sent: publickey,keyboard interae)
- 学习AIX-lsattr、lsps命令备忘
- fatal: The remote end hung up unexpectedly error: failed to push some refs to ''
- SASL LOGIN authentication failed: authentication failure
- Most Concern Sneakers In The Sports Field-Designer Nike Air Max
- maven install时报错Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile
- give root password for maintenance错误解决办法!
- IT English Collection(8)之Main event loop
- SOA与EAI的比较
- extmail配置大全
- libaio under MIPS architecture /在mips架构下使用的libaio
- AIX 下的 core dump 分析入门
- 16th Training
- poj 1273 Drainage Ditches_最大流模版
- poj 1273 Drainage Ditches_最大流模版