• 出栈序列(栈和队列)


    Description
    已知自然数1,2,...,N(1≤N≤10000)依次入栈(即a<b当且仅当a先于b入栈),问:序列C1,C2,...,CN是否为可能的出栈序列。
      例如:N=5时,3,4,2,1,5是一个可能的出栈序列,因为其可以按如下操作获得:push 1,push 2,push 3,pop,push 4,pop,pop,pop,push 5,pop

    Input
     输入数据包含若干组测试样例。
      每组测试样例的第一行为整数N(1≤N≤10000);
      第二行为N个正整数,以空格隔开,为出栈序列;
      输入数据的末尾以一个0表示输入的结束。

    Output
    对于每组测试样例,输出结果为一行字符串。
      如给出的序列是可能的出栈序列,则输出"Yes",否则输出"No"。
      注意:区分大小写,引号本身不输出。

    Sample Input
    5
    3 4 2 1 5
    5
    3 5 1 4 2
    0
    Sample Output
    Yes
    No
    Hint

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<stack>
     4 using namespace std;
     5 int main()
     6 {
     7     int n,a[10000],i,j,flag;
     8     while(scanf("%d",&n)!=EOF)
     9     {
    10         if(n==0)
    11             break;
    12         stack<int>s;
    13         flag=1;
    14         for(i=0; i<n; i++)
    15         {
    16             scanf("%d",&a[i]);
    17         }
    18         for(i=1; i<a[0]; i++)
    19         {
    20             s.push(i);
    21         }///搞定第一个数
    22         for(j=1; j<n; j++)
    23         {
    24             if(a[j]>a[j-1])///后面的数大于前面的数
    25             {
    26                 for(i=a[j-1]; i<=a[j]; i++)
    27                 {
    28                     s.push(i);
    29                     s.pop();
    30                 }
    31             }
    32             else
    33             {
    34 
    35                 if(s.top()==a[j])
    36                 {
    37                     s.pop();
    38                 }
    39                 else
    40                 {
    41                     flag=0;
    42                     break;
    43                 }
    44             }
    45         }
    46         if(flag==1)
    47             printf("Yes
    ");
    48         else
    49             printf("No
    ");
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    php 数组
    条件语句if else ,switch ,while ,do.while
    if..else 判断中的 Boolean()转换
    wampserver 集成环境
    sublime text 安装及使用
    vue tab切换
    SVG 基础
    gitosis管理员的密钥丢失解决办法
    源码安装MySQL
    Xshell远程登录
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/8675969.html
Copyright © 2020-2023  润新知