zoukankan      html  css  js  c++  java
  • pku1363 Rails

    http://poj.org/problem?id=1363
    数据结构 栈
    用2个栈模拟,复杂度O(n) (每个元素最多进栈(s2)一次,出栈一次)
    s1弹出的元素压入s2,s2再弹出来一定要按照顺序n,n-1,n-2...4,3,2,1
    想办法让s2按此顺序弹出,如果不能,则输出"No"
     1 #include <stdio.h>
     2 #include <stack>
     3 
     4 using namespace std;
     5 
     6 stack<int> s1, s2;
     7 
     8 void clear()
     9 {
    10     while(!s1.empty())
    11     {
    12         s1.pop();
    13     }
    14     while(!s2.empty())
    15     {
    16         s2.pop();
    17     }
    18 }
    19 
    20 int main()
    21 {
    22     int n, cases, i, a;
    23     for(cases=1; scanf("%d", &n), n; cases++)
    24     {
    25         if(cases-1)
    26         {
    27             printf("\n");
    28         }
    29         while(scanf("%d", &a), a)
    30         {
    31             clear();
    32             s1.push(a);
    33             for(i=1; i<n; i++)
    34             {
    35                 scanf("%d", &a);
    36                 s1.push(a);
    37             }
    38             for(i=n; i>=1;)
    39             {
    40                 if(!s2.empty() && s2.top()==i)
    41                 {
    42                     s2.pop();
    43                     i --;
    44                     continue;
    45                 }
    46                 if(s1.empty())
    47                 {
    48                     i = -1;
    49                     break;
    50                 }
    51                 else
    52                 {
    53                     s2.push(s1.top());
    54                     s1.pop();
    55                 }
    56             }
    57             printf(i+1? "Yes\n": "No\n");
    58         }
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    C# 小算法1
    函数 y=x^x的分析
    随机数
    对拍
    Cube Stack
    Permutation
    一笔画问题
    康托展开&&康托逆展开
    待完成
    小错误 17/8/10
  • 原文地址:https://www.cnblogs.com/yuan1991/p/pku1363.html
Copyright © 2011-2022 走看看