zoukankan      html  css  js  c++  java
  • Rail_UVa514_栈

     1 /*
     2     https://vjudge.net/problem/UVA-514
     3 */
     4 #include "pch.h"
     5 #include<iostream>
     6 #include<cstdio>
     7 #include<stack>
     8 using namespace std;
     9 const int MAXN = 1000 + 10;
    10 int n, target[MAXN];
    11 
    12 int main()
    13 {
    14     
    15     while (scanf("%d", &n) == 1) // 输入,一共n辆火车
    16     {
    17         int isOnePart = 1; // 是否是同一次测试
    18         if (n == 0) // 程序应当结束
    19             break;
    20         while (isOnePart) // 是同一次测试时
    21         {
    22             stack<int> s;
    23             int A = 1, B = 1; // A:进C站顺序 1,2,3,...,n   B:数组target的下标
    24             for (int i = 1; i <= n; i++)
    25             {
    26                 scanf("%d", &target[i]); // 输入出C站顺序
    27                 if (target[i] == 0)
    28                 {
    29                     isOnePart = 0;
    30                     printf("
    "); // 注意!
    31                     break;
    32                 }
    33             }
    34             if (isOnePart == 0) // 退出此次测试,进入另一部分的测试
    35                 break;
    36             int ok = 1;   // 标志,是否可以按顺序出站
    37             while (B <= n) // 判断当前出C站的车辆数是否达到总数
    38             {
    39                 if (A == target[B]) // 要进站的火车与要出站的火车为同一辆,则进站后直接出站
    40                 {
    41                     A++; B++;
    42                 }
    43                 else if (!s.empty() && s.top() == target[B])  // 栈(站)非空,栈顶与要出站的火车相同,则出站
    44                 {
    45                     s.pop();
    46                     B++;  // 要出站的++
    47                 }
    48                 else if (A <= n)  // 要进站的与出站的不同,只进站,先等着,当栈顶与目标相同时再出(上一个if)
    49                 {
    50                     s.push(A++);
    51                 }
    52                 else
    53                 {
    54                     ok = 0;  //正常结束循环为b=n,  若前几种情况都不符合,则不能按照要求顺序出站,break
    55                     break;
    56                 }
    57             }
    58             printf("%s
    ", ok ? "Yes" : "No");
    59         }
    60         
    61     }
    62     return 0;
    63 }
  • 相关阅读:
    字符串动手动脑
    类与对象课后思考
    java动手动脑课后思考题
    java思考题
    《大道至简第二章读后感》
    从命令行接收多个数字,求和之后输出结果
    《大道至简》读后感
    团队项目成员和题目
    软件工程个人作业04
    软件工程个人作业03
  • 原文地址:https://www.cnblogs.com/tornado549/p/10411201.html
Copyright © 2011-2022 走看看