zoukankan      html  css  js  c++  java
  • 出栈序列(栈和队列)

    已知自然数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
    
    思路:例如第一组样例 先放1 2 3 让3出栈 放4 让4出 现在栈里有1 2 再让2出 让1出 在放5 让5出 满足    第二组样例  让1 2 3 进栈 3出 让4 5进栈 5出 可不能让1出  所以NO
    #include <iostream>
    #include<cstdio>
    #include<stack>
    using namespace std;
    #include <stdio.h>
    stack<int> str;
    int main()
    {
        int a[100000]={0},i,j,n,t,p=0;
        while(1)
        {
            scanf("%d",&n);
            if(n==0)
                break;
            p=0;
            for(i=0;i<=n-1;i++)
                scanf("%d",&a[i]);
            for(i=1;i<=a[0];i++)
                str.push(i);
            str.pop();
            for(i=1;i<=n-1;i++)
            {
                if(a[i]>a[i-1])
                    for(j=a[i-1]+1;j<=a[i];j++)
                   {
                    str.push(i);
                    str.pop();
                   }
                else
                {
                    t=str.top();
                    if(t==a[i])
                        str.pop();
                    else
                    {
                        p=1;
                        break;
                    }
                }
            }
            if(p==0)
                printf("Yes
    ");
            else
                printf("No
    ");
        }
        return 0;
    }
  • 相关阅读:
    第六章 编译并运行程序
    第五章 顺序型编程进阶
    第四章 异常
    第三章 顺序型编程
    TCP和UDP的区别和优缺点
    Java UDP Socket编程
    springboot 学习资源推荐
    springboot集成redis
    微信公众号的SpringBoot+Quartz的定时任务Demo
    远程桌面发生身份验证错误,要求的函数不受支持【WIN10家庭】或【专业版】--解决办法
  • 原文地址:https://www.cnblogs.com/zcy19990813/p/9702799.html
Copyright © 2011-2022 走看看