zoukankan      html  css  js  c++  java
  • stack-铁轨问题

    每辆火车都从A方向驶入车站,再从B方向驶出车站,同时它的车厢可以进行某种形式的重新组合。假设从A方向驶来的火车有n节车厢(n<1000),分别按顺序编号为1,2,...,n。假定在进入车站之前每节车厢之间都是不连着的,并且它们可以自行移动,直到处在B方向的铁轨上。另外假定车站C里可以停放任意多节的车厢。但是一旦当一节车厢进入车站C,它就不能再回到A方向的铁轨上了,并且一旦当它进入B方向的铁轨后,它就不能再回到车站C。负责车厢调度的工作人员需要知道能否使它以a1,a2,...,an的顺序从B方向驶出。     请写一个程序,用来判断能否得到指定的车厢顺序。

    【输入格式】

        输入由两行组成:

    第一行有n(n<1000),表示有n节车厢。

    第二行n个数表示一组需判定的车厢。

    【输出格式】

        对于每个输入输出有一行,每行根据判断,如果能正常驶出输出"YES",否则输出"NO"。

    【输入输出样例】

    5

    5 4 3 2 1

    Yes

    5

    5 4 1 2 3

    No

    6

    6 5 4 3 2 1

    Yes

     1 #include<cstdio>
     2 #include<stack>
     3 using namespace std;
     4 
     5 const int maxn = 1000 + 10;
     6 int n, target[maxn];
     7  
     8  int main()
     9  {
    10      while(scanf("%d", &n)==1)
    11      {
    12          stack<int> s;
    13          int A = 1, B = 1;
    14          for(int i = 1; i <= n; i++)
    15          scanf("%d", &target[i]);
    16          int ok = 1;
    17          while(B <= n)          //B表示出栈的车的数量 
    18          {
    19              if(A==target[B])    //A表示出栈数量加上入栈车辆和 
    20              {
    21                  A++; B++;
    22              }
    23              else if(!s.empty()&&s.top()==target[B])
    24              {
    25                  s.pop(); B++;
    26              }
    27              else if(A<=n) s.push(A++);
    28              else
    29              {
    30                  ok = 0; break;
    31              }
    32          }
    33         printf("%s
    ", ok ? "Yes" : "No");
    34      } 
    35      return 0;
    36  }
    View Code
  • 相关阅读:
    949. Largest Time for Given Digits
    450. Delete Node in a BST
    983. Minimum Cost For Tickets
    16. 3Sum Closest java solutions
    73. Set Matrix Zeroes java solutions
    347. Top K Frequent Elements java solutions
    215. Kth Largest Element in an Array java solutions
    75. Sort Colors java solutions
    38. Count and Say java solutions
    371. Sum of Two Integers java solutions
  • 原文地址:https://www.cnblogs.com/acm1314/p/4516918.html
Copyright © 2011-2022 走看看