from my CSDN: https://blog.csdn.net/su_cicada/article/details/86939523

例题6-2 铁轨(Rails, ACM/ICPC CERC 1997, UVa 514)

某城市有一个火车站,铁轨铺设如图6-1所示。 有n节车厢从A方向驶入车站,按进站顺

序编号为1~n。 你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出

车站。 例如,出栈顺序(5 4 1 2 3)是不可能的,但(5 4 3 2 1)是可能的。

为了重组车厢,你可以借助中转站C。 这是一个可以停放任意多节车厢的车站,但由于

末端封顶,驶入C的车厢必须按照相反的顺序驶出C。 对于每个车厢,一旦从A移入C,就不

能再回到A了;一旦从C移入B,就不能回到C了。 换句话说,在任意时刻,只有两种选择:

A→C和C→B。

Sample Input

5

1 2 3 4 5

5 4 1 2 3

0

6

6 5 4 3 2 1

0

0

Sample Output

Yes

No



Yes

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=838&page=show_problem&problem=455

和书上的思路一样

车进入是先从1到n

我们每进入一辆,就判断一下是不是要出去的那一辆, 如果是,这辆车就走了,然后判断一下下一辆

如果不是就进入中转轨道中等的

#include<iostream>
#include<stack>
using namespace std; // [注意] 最后一组输出之后要有一个空行 int fun(int N){
stack<int> wait; // 等待通过的火车
stack<int> temp; // 中转轨道
for(int i=N;i>=1;i--){
wait.push(i);
} int train;
int no = 0; // 不能吗
for(int i=1;i<=N;i++){
cin>>train;
if(train == 0)
return 0; // 该退出了
if(no == 1)
continue;
// cout<<train<<" ??????????????"<<endl;
// cout<<"wait: "; show(wait);cout<<"temp: "; show(temp);cout<<"---------------"<<endl;
while(temp.empty() || temp.top() != train){ if(wait.empty()){
no = 1; // wait空了,中转的第一个却不能走,所以不行
break;
} int out = wait.top(); // 车厢出等待区
wait.pop(); temp.push(out); // 车厢 进入中转区
}
if(temp.top() == train)
temp.pop(); // 中转的车走了
}
if(temp.empty() && wait.empty()){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
return 1;
} int main()
{
int N;
int index = 0;
while(cin>>N && N != 0){
// if(index != 0)
index = 1;
while(fun(N)!=0);
cout<<endl;
}
return 0;
} // AC at 2019/2/8 13:41
// spend about 1 hours

已经过了5天了有什么感想我也想不起来了,见鬼

UVA 514 - Rails ( 铁轨)的更多相关文章

  1. UVa 514 Rails(经典栈)

     Rails  There is a famous railway station in PopPush City. Country there is incredibly hilly. The st ...

  2. Uva - 514 - Rails

    C是一个栈,每次先检查A的第一个元素是否满足,如果满足,直接进入B:再检查C中栈顶元素是否满足,如果满足,出栈进入B:前两步都不满足将A放入C栈中.循环到B满或者A,C中都不满足条件并且A空,第一种情 ...

  3. UVa 514 Rails(栈的应用)

    题目链接: https://cn.vjudge.net/problem/UVA-514 /* 问题 输入猜测出栈顺序,如果可能输出Yes,否则输出No 解题思路 貌似没有直接可以判定的方法,紫书上给出 ...

  4. UVA ~ 514 ~ Rails (栈)

    参考:https://blog.csdn.net/ZscDst/article/details/80266639 #include <iostream> #include <cstd ...

  5. UVA - 514 Rails(栈模拟)

    题目: 给出一个序列,问将1,2,3,4……按从小到大的顺序入栈,能否得到给出的序列. 思路: 用stack模拟就可以了. 当前的cnt如果小于a[i],就将cnt入栈,否则就判断栈顶是不是和a[i] ...

  6. 铁轨(rails, ACM/ICPC CERC 1997,Uva 514)

    铁轨(rails, ACM/ICPC CERC 1997,Uva 514) 题目描述 某城市有一个火车站,铁轨铺设如图所示.有n节车厢从A方向驶入车站,按进站顺序编号为1~n.你的任务是让它们按照某种 ...

  7. Rails,uva 514

    题目:铁轨 题目链接:UVa514链接 题目描述: 某城市有一个火车站,有n节车厢从A方向驶入车站,按进站的顺序编号为1-n.你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶入车站.例 ...

  8. UVa 514 (stack的使用) Rails

    练习一下stack的使用,还有要注意一下输入的格式,看了好长时间没懂. //#define LOCAL #include <iostream> #include <cstdio> ...

  9. 6-2 铁轨 uva 514

    较为简单的stack题目 但是还是犯了一些错误: 1. 要想清空栈,直接重新定义较为方便! 2.在if(s.top()==x)时  加上  !s.empty()  否则程序会崩溃 3. 必须要加上i- ...

随机推荐

  1. http状态码汇总及问题经验总结

    我们经常会遇到404.500.302等提示,它们究竟是什么意思呢?除了这几个常见的状态码外,还有哪些我们没有遇到过的但有可能出现的状态码呢?这里本人做了一个汇总,与大家分享一下. 常见的HTTP错误可 ...

  2. 使用LR的socket协议进行进行性能测试,转解决方案

    在用LR对公司delphi开发的C/S程序进行测试时,发现只有选择socket协议可以录制代码,经研究是通过TCP/IP的方式将参数保存在buffer中发送的方式来完成操作,但由于将buffer内容参 ...

  3. HDU4578 线段树(区间更新 + 多种操作)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578  , 线段树的区间更新 + 多种操作,好题. 虽然是比较裸的线段树,但是比较麻烦,并且有很多细节 ...

  4. 如何用iOS工程生成iOS模拟器包

    1. 在终端上运行下面的命令来查找你的机器上可用的SDK的版本 xcodebuild -showsdks 2. 创建模拟器包: xcodebuild -workspace ** -scheme ** ...

  5. day13 多线程建立方法

    #01创建多线程    继承Thread类    覆盖run方法:run方法里面运行要执行的代码    创建对象    调用start方法,start方法会开启线程,然后调用run方法 获取线程名字: ...

  6. SVG中的元素属性

    SVG attributes by category Animation event attributes onbegin, onend, onload, onrepeat Animation att ...

  7. 安卓原生与hml交互(WebView基础)

    WebView加载页面 webView有两种加载方式, 加载网络地址 webView.loadUrl("www.xxx.com/index.html"); 加载本地资源 webVi ...

  8. 将本地已经存在的非git项目提交到github上的空仓库

    一.本地项目执行操作 1.在本地项目目录下初始化git仓库 git init 2.将本地项目下工作区的所有文件添加到git版本库的暂存区中 git add . (可以创建.gitignore文件忽略不 ...

  9. HDU 1059(多重背包加二进制优化)

    http://acm.hdu.edu.cn/showproblem.php?pid=1059 Dividing Time Limit: 2000/1000 MS (Java/Others)    Me ...

  10. MAPREDUCE框架结构及核心运行机制

    1.2.1 结构 一个完整的mapreduce程序在分布式运行时有三类实例进程: 1.MRAppMaster:负责整个程序的过程调度及状态协调 2.mapTask:负责map阶段的整个数据处理流程 3 ...