铁轨Rails UVA514(stack运用)
2015-05-16 16:37
351 查看
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19641
题目大意:某地有一个火车站,如图,有n节车厢从A驶向B,n节车厢编号1~n,你的任务是能否让他们按照你输入的顺序进入到B方向的铁轨(有点像詹天佑的之字形铁轨)
完全符合栈的后进先出(LAST IN FIRST OUT) 例如出栈顺序54123不可以,但是54321 可以(先从A依次驶入Station,然后5就变成了”车头“,以54321驶出入B);
【代码如下】
题目大意:某地有一个火车站,如图,有n节车厢从A驶向B,n节车厢编号1~n,你的任务是能否让他们按照你输入的顺序进入到B方向的铁轨(有点像詹天佑的之字形铁轨)
完全符合栈的后进先出(LAST IN FIRST OUT) 例如出栈顺序54123不可以,但是54321 可以(先从A依次驶入Station,然后5就变成了”车头“,以54321驶出入B);
【代码如下】
#include <iostream> #include <stack> #define maxn 1010 using namespace std; int num[maxn]; int main() { int n; while(cin>>n&&n) { int sign=0; while(1) { stack<int>s; for(int i=1;i<=n;i++) { cin>>num[i]; if(num[1]==0) { sign=1; break; } } if(sign) break; int ok=1; int A=1,B=1;//参照了lrj书上的写法 (A代表每节车厢,B则代表给定出栈顺序的下标) while(B<=n) { if(A==num[B]){A++;B++;} else if(!s.empty()&&s.top()==num[B]){s.pop();B++;} else if (A<=n) {s.push(A++);} else { ok = 0;break;} } if(ok) cout<<"Yes\n"; else cout<<"No\n"; } cout<<"\n"; } return 0; }
相关文章推荐
- 铁轨Rails UVA514(stack运用)
- stack&&UVa514 Rails (铁轨)的理解与解析
- UVa 514 Rails(铁轨) 栈
- 铁轨(Rails,ACM/ICPC CERC 1997.UVa 514)
- UVA514 Rails (stack)
- 例题6-2 UVA 514 - Rails (铁轨)
- UVA 514 Rails 铁轨 栈的模拟
- UVa514 Rails(铁轨)
- 例题6-2 铁轨(Rails, ACM/ICPC CERC 1997, UVa 514)
- UVA514 Rails(铁轨)
- Uva514 Rails(铁轨)
- UVA514:Rails(铁轨)
- UVA 514 铁轨 (Rails)
- UVa - 514 - Rails(栈-stack)
- UVa 514 Rails(stack)
- UVa 514 (stack的使用) Rails
- UVa514-Rails-铁轨--栈的使用
- UVa--514 Rails (stack)
- 算法竞赛 例6-2铁轨(UVa 514)
- Uva 514 Rails (STL 栈+队列 模拟)