zoukankan      html  css  js  c++  java
  • SDUT 2088 数据结构实验之栈与队列十一:refresh的停车场

     

    数据结构实验之栈与队列十一:refresh的停车场

    Time Limit: 1000 ms Memory Limit: 65536 KiB

    Problem Description

     refresh最近发了一笔横财,开了一家停车场。由于土地有限,停车场内停车数量有限,但是要求进停车场的车辆过多。当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先

    进入停车场,而且停车场的结构要求只出去的车辆必须是停车场中最后进去的车辆。现告诉你停车场容量N以及命令数M,以及一些命令(Add num 表示车牌号为num的车辆要进入停车场或便道,

    Del 表示停车场中出去了一辆车,Out 表示便道最前面的车辆不再等待,放弃进入停车场)。假设便道内的车辆不超过1000000.

    Input

     输入为多组数据,每组数据首先输入N和M(0< n,m <200000),接下来输入M条命令。

    Output

     输入结束后,如果出现停车场内无车辆而出现Del或者便道内无车辆而出现Out,则输出Error,否则输出停车场内的车辆,最后进入的最先输出,无车辆不输出。

    Sample Input

    2 6
    Add 18353364208
    Add 18353365550
    Add 18353365558
    Add 18353365559
    Del
    Out

    Sample Output

    18353365558
    18353364208

    提示:本题主要考察栈与队列的性质,栈是后进先出,队列是先进先出,所以只需判断好哪个是停车场,哪个是便道就可以了。

    代码实现如下(g++):
    #include <bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
        int n,m;
        string num;
        while(cin>>n>>m)
        {
            stack<string>s;
            queue<string>q;
            char a[4];
            int tag=0,t;
            for(int i=0;i<m;++i)
            {
                cin>>a;
                if(a[0]=='A')
                {
                    cin>>num;
                    t=s.size();
                    if(t==n)
                        q.push(num);
                    else
                        s.push(num);
                }
                else if(a[0]=='D')
                {
                    if(s.empty())
                        tag=1;
                    else
                    {
                        s.pop();
                        if(!q.empty())
                        {
                            s.push(q.front());
                            q.pop();
                        }
                    }
                }
                else
                {
                    if(q.empty())
                        tag=1;
                    else
                        q.pop();
                }
            }
            if(tag)
                cout<<"Error"<<endl;
            else
            {
             while(!s.empty())
            {
                cout<<s.top()<<endl;;
                s.pop();
            }
            }
        }
        return 0;
    }
    
    
    /***************************************************
    Result: Accepted
    Take time: 0ms
    Take Memory: 200KB
    ****************************************************/
  • 相关阅读:
    ES5-Array的新增方法
    ES5-Object扩展方法
    JS利用HTML5的Web Worker实现多线程
    git合并分支到master上面
    JS线程及回调函数执行
    JS实现继承
    蓝桥杯 高精度加法
    蓝桥杯 阶乘计算
    【题集】k倍区间(抽屉原理)
    代码填空:全排列
  • 原文地址:https://www.cnblogs.com/jkxsz2333/p/9491867.html
Copyright © 2011-2022 走看看