• refresh的停车场(栈和队列的STL)


    refresh的停车场

    Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

    题目描写叙述

     refresh近期发了一笔横財,开了一家停车场。

    因为土地有限,停车场内停车数量有限。可是要求进停车场的车辆过多。

    当停车场满时,要进入的车辆会进入便道等待,最先进入便道的车辆会优先

    进入停车场。并且停车场的结构要求仅仅出去的车辆必须是停车场中最后进去的车辆。现告诉你停车场容量N以及命令数M,以及一些命令(Add num 表示车牌号为num的车辆要进入停车场或便道。
    Del 表示停车场中出去了一辆车。Out 表示便道最前面的车辆不再等待,放弃进入停车场)。如果便道内的车辆不超过1000000.

    输入

     首先输入N和M(0< n,m <200000),接下来输入M条命令。

    输出

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

    演示样例输入

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

    演示样例输出

    18353365558
    18353364208

    提示

     

    来源

     

    演示样例程序


    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <algorithm>
    #include <iostream>
    #include <queue>
    #include <stack>
    #include <string>
    using namespace std;
    int main()
    {
    
        char str[20];
        string s;
        int flag=0;//用来标记栈和队列是否为空。如为空还继续进行Del或者Out操作,则输出Error;
        int n,m,i;
        while(~scanf("%d %d",&n,&m))
        {
            stack<string >p;//记得要在循环里面建栈和队列。wa3次,哭瞎了。

    queue<string >q; flag=0; for(i=1; i<=m; i++) { cin>>str; if(strcmp(str,"Add")==0) { cin>>s; if(p.size()==n)//此时证明停车场满了 q.push(s);//则车辆进入便道 else p.push(s); } else if(strcmp(str,"Del")==0) { if(p.empty()) flag=1; else { p.pop(); if(!q.empty()) { p.push(q.front()); q.pop(); } } } else if(strcmp(str,"Out")==0) { if(q.empty()) flag=1; else q.pop(); } } if(flag) cout<<"Error"<<endl; else { while(!p.empty()) { cout<<p.top()<<endl; p.pop(); } } } return 0; }


    
  • 相关阅读:
    实现在Android本地视频播放器开发
    敏捷开发的4个中心思想
    PHP如何大幅度提升运行效率? 把它编译成机器码!
    卸载Oracle数据库(有图有真相)
    宁波理工邀请赛 c zoj3185解题报告
    FRG图像文件格式的压缩质量
    另类的文件夹加密(批处理实现)
    代码详查中的自尊心
    [C# 网络编程系列]专题十:实现简单的邮件收发器
    php中获得客户端,服务器ip
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6845403.html
Copyright © 2020-2023  润新知