UVa514 Rails(铁轨)

UVa514 Rails(铁轨)

题目:铁轨

题目链接:UVa514链接

题目描述:

某城市有一个火车站,有n节车厢从A方向驶入车站,按进站的顺序编号为1-n.你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶入车站。例如,出栈顺序(5 4 1 2 3)是不可能的,但是(5 4 3 2 1)是可能的。

题目分析:

为了重组车厢,借助中转站,对于每个车厢,一旦从A移入C就不能回到A了,一旦从C移入B,就不能回到C了,意思就是A->C和C->B。而且在中转站C中,车厢符合后进先出的原则。故这里可以看做为一个栈。

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

参考代码:

//铁轨.cpp
#include <iostream>
#include <stack>
using namespace std;

const int MAXN = 1000 + 10;
int n, target[MAXN];

int main()
{
    while(cin >> n && n)
    {
        for(int i = 1; i <= n; i++)
        {
            cin >> target[i];
        }

        stack<int> s;
        int A = 1,B = 1;
        int ok = 1;

        while(B <= n)
        {
            if(A == target[B])
            {
                A++;
                B++;
            }
            else if(!s.empty() && s.top() == target[B])
            {
                s.pop();
                B++;
            }
            else if(A <= n)
                s.push(A++);
            else
            {
                ok = 0;
                break;
            }
        }
        cout << (ok ? "Yes" : "No" )<<endl; //注意这里必须括号括起来
    }
    return 0;
}

UVa514 Rails(铁轨)

时间: 2024-08-26 04:20:51

UVa514 Rails(铁轨)的相关文章

UVA514 - Rails(栈)

题目:UVA514 - Rails(栈) 题目大意:某城市有一个火车站,铁轨成Y字形,有n节车厢从A方向驶入车站,按进站顺序编号1-n,现在给你一个序列代表进入B的顺序,你可以借助一个C中转站,问能否可以按这样的序列驶入B. 解题思路:栈模拟,中转站就代表栈,将车厢入栈后,只能从栈顶一个一个出去.注意输出每个cas都有一个空行. 代码: #include <cstdio> #include <cstring> #include <stack> using namespa

【UVa-514】铁轨——栈的学习

UVa514 Rails(铁轨) 题目:铁轨 题目链接: UVa514链接 题目描述: 某城市有一个火车站,有n节车厢从A方向驶入车站,按进站的顺序编号为1-n.你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶入车站.例如,出栈顺序(5 4 1 2 3)是不可能的,但是(5 4 3 2 1)是可能的. 题目分析: 为了重组车厢,借助中转站,对于每个车厢,一旦从A移入C就不能回到A了,一旦从C移入B,就不能回到C了,意思就是A->C和C->B.而且在中转站C中,车厢符合后进先出的

UVA514 Rails

 铁轨 PopPush城市有一座著名的火车站.这个国家到处都是丘陵.而这个火车站是建于上一个世纪.不幸的是,那时的资金有限.所以只能建立起一条路面铁轨.而且,这导致这个火车站在同一个时刻只能一个轨道投入使用,因为它缺少空间,两列火车将无路可走.具体看下图. 当地的惯例是每一列火车从A方向驶向B方向时候,会用某种方式将车厢重组.假设火车将要到达A方向,拥有N个车厢(N<=1000),这些车厢按照递增顺序标记为1到N.负责从组车厢的领导,必须知道是否能从组车厢让它驶出B,而这个重组的序列就是a1\a

UVA514 Rails(stack)

opPush城市有一座著名的火车站.这个国家到处都是丘陵.而这个火车站是建于上一个世纪.不幸的是,那时的资金有限.所以只能建立起一条路面铁轨.而且,这导致这个火车站在同一个时刻只能一个轨道投入使用,因为它缺少空间,两列火车将无路可走.具体看下图. 当地的惯例是每一列火车从A方向驶向B方向时候,会用某种方式将车厢重组.假设火车将要到达A方向,拥有N个车厢(N<=1000),这些车厢按照递增顺序标记为1到N.负责从组车厢的领导,必须知道是否能从组车厢让它驶出B,而这个重组的序列就是a1\a2\a3.

UVa514 Rails (栈)

链接:http://acm.hust.edu.cn/vjudge/problem/19641分析:车厢符合后进先出的原则,因此是一个栈. 1 #include <cstdio> 2 #include <stack> 3 using namespace std; 4 5 const int maxn = 1000 + 10; 6 7 int n, target[maxn]; 8 9 int main() { 10 while (scanf("%d", &n

514 - Rails

Rails PS:因为该题排版较麻烦,这里给出OJ网址:UVa514 - Rails 某城市有一个火车站,铁轨铺设如图6-1所示.有n节车厢从A方向驶入车站,按进站顺序编号为1-n.你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出车站.例如,出栈顺序(5 4 1 2 3)是不可能的,但(5 4 3 2 1)是可能的. 为了重组车厢,你可以借助中转站C.这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入C的车厢必须按照相反的顺序驶出C.对于每个车厢,一旦从A移入C,就不能再

例题6-2(Rails, UVa 514)

题目链接 给定入栈顺序,问能否以给出的顺序出栈. 众所周知,栈的特点是先入后出. 此特点在该题中体现为对于当前需要出栈的元素(要想先出),必须位于栈顶或者还未入栈(必须后入). 用数组target来存储出栈序列,target[B_now] 表示当前需要驶入B的车厢(即当前需要出栈的元素),A_first表示当前A中第一个车厢(即下一个入栈元素) 1 #include <iostream> 2 #include <stack> 3 using namespace std; 4 5 c

铁轨Rails UVA514(stack运用)

题目链接: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)

暑假集训(1)第五弹 -----Rails(Uva514)

PopPush城市有一座著名的火车站.这个国家到处都是丘陵.而这个火车站是建于上一个世纪.不幸的是,那时的资金有限.所以只能建立起一条路面铁轨.而且,这导致这个火车站在同一个时刻只能一个轨道投入使用,因为它缺少空间,两列火车将无路可走.具体看下图.   当地的惯例是每一列火车从A方向驶向B方向时候,会用某种方式将车厢重组.假设火车将要到达A方向,拥有N个车厢(N<=1000),这些车厢按照递增顺序标记为1到N.负责从组车厢的领导,必须知道是否能从组车厢让它驶出B,而这个重组的序列就是a1\a2\