例题6-2 UVA 514 - Rails (铁轨)
来源:互联网 发布:微交易平台源码 编辑:程序博客网 时间:2024/04/30 02:55
挺好的一道题目,想样例代码也想了很久。
大体思路:
整体分为两个过程,从A到C,从C到B,
用A代表要从A到C的编号序列,肯定是1到n了,
用B代表最终在B的车的编号。
让A = 1,B = 1,B是最终车辆的数组索引。
开始循环,发现A中的车等于B中的车,则说明了,这辆车要立即进站并且立即出站。
else 发现 B中的车等于栈C中的第一个,那么说明此时,栈C的中的车要出站。
else 发现A中还有剩余,则让A进站。
否则无意义了 那就肯定NO了!
在一点输出注意格式就OK了,我在一次没有读好题目,错在格式上了,其实最后一组后是有空行的!
启示:
这个题如果不这样想的话,就是硬想的话,会变比较麻烦并且不知所措,所以这个题目给我一个启示,那就是尽量把问题实际化,具体化,就是让这个问题变得有实际意义,一项一项模拟,最后的else肯定就是不成立的了!
代码如下:
#include<stack>#include<cstdio>using namespace std;const int maxn = 1000 + 10;int a[maxn];int main(){ int n,cnt=0; while(scanf("%d",&n) == 1 && n){ while(scanf("%d",&a[1]) && a[1]){ for (int i = 2; i <= n; ++i)scanf("%d",&a[i]); stack<int>s; int A=1,B=1; bool ok=true; while(B <= n){ if (A == a[B]){A++;B++;} else if (!s.empty() && s.top() == a[B]){s.pop();B++;} else if(A <= n)s.push(A++); else {ok=false;break;} } printf("%s", ok ? "Yes\n" : "No\n"); } printf("\n"); } return 0;}
0 0
- 例题6-2 UVA 514 - Rails (铁轨)
- 例题6-2 铁轨(Rails, ACM/ICPC CERC 1997, UVa 514)
- UVA 514 铁轨 (Rails)
- UAa514 例题6-2 铁轨 Rails
- UVA 514 Rails 铁轨
- UVa 514 Rails(铁轨) 栈
- 例题6-2 铁轨(栈)
- 铁轨(UVa 514)
- 经典第六章 例题 6-2 UVA 514 Rails(栈的基础应用)
- uva 514 铁轨(栈)
- UVa 514(栈)铁轨
- UVa514 Rails(铁轨)
- 铁轨(Rails) UVa514
- Rails铁轨(栈)
- UVa 514 铁轨
- 例题6-2 UVa 514(栈)
- 铁轨(Rails)
- 铁轨Rails UVA514(stack运用)
- 【DP+斜率优化】[HNOI2008][HYSBZ/BZOJ1010]玩具装箱toy
- CSS中position属性
- java排序中用到的两种比较方式:Comparable,Comparator
- JavaScript模式-temp
- html5学习心得【缓慢更新】
- 例题6-2 UVA 514 - Rails (铁轨)
- MySQL知识(一)——数据库概念及基本操作
- xcode离线下载地址
- mysql-5.7.10安装及错误解决
- 【误差估计】[HNOI2008][HYSBZ/BZOJ1011]遥远的行星
- 杭电1017 A Mathematical Curiosity
- php魔术方法
- 小Z的袜子【莫队算法】
- 设计模式之抽象工厂模式