zoukankan      html  css  js  c++  java
  • SDUT 1466 双向队列

     

    双向队列

    Time Limit: 1000 ms Memory Limit: 65536 KiB

    Problem Description

          想想双向链表……双向队列的定义差不多,也就是说一个队列的队尾同时也是队首;两头都可以做出队,入队的操作。
    现在给你一系列的操作,请输出最后队列的状态;
    命令格式:
    LIN X  X表示一个整数,命令代表左边进队操作;
    RIN X  表示右边进队操作;
    ROUT
    LOUT   表示出队操作;

    Input

    第一行包含一个整数M(M<=10000),表示有M个操作;
    以下M行每行包含一条命令;
    命令可能不合法,对于不合法的命令,请在输出中处理;

    Output

    输出的第一行包含队列进行了M次操作后的状态,从左往右输出,每两个之间用空格隔开;
    以下若干行处理不合法的命令(如果存在);
    对于不合法的命令,请输出一行X ERROR
    其中X表示是第几条命令;

    Sample Input

    8
    LIN 5
    RIN 6
    LIN 3
    LOUT
    ROUT
    ROUT
    ROUT
    LIN 3

    Sample Output

    3
    7 ERROR

    提示:这就体现出c++的强大之处了,写双向队列自带函数,只需点几下,就能玩一年2333!!!敲上deque直接表示双向队列,具体操作按要求实现。

    代码实现如下(g++):
    #include<bits/stdc++.h>
    
    using namespace std;
    
    int main()
    {
        int m;
        int i;
        char a[21];
        int flag[100010];
        int x;
        deque<int>t;
        scanf("%d",&m);
        for(i=1;i<=m;i++)
        {
            scanf("%s",a);
            if(strcmp(a,"LIN")==0)
            {
                scanf("%d",&x);
                t.push_front(x);
            }
            else if(strcmp(a,"RIN")==0)
            {
                scanf("%d",&x);
                t.push_back(x);
            }
            else if(strcmp(a,"LOUT")==0)
            {
                if(t.empty())
                {
                    flag[i]=1;
                }
                else
                    t.pop_front();
            }
            else if(strcmp(a,"ROUT")==0)
            {
                if(t.empty())
                {
                    flag[i]=1;
                }
                else
                    t.pop_back();
            }
        }
        int aa=t.front();
        t.pop_front();
        printf("%d",aa);
        while(!t.empty())
        {
        int aa=t.front();
        t.pop_front();
        printf(" %d",aa);
        }
        printf("
    ");
        for(i=1;i<=m;i++)
        {
        if(flag[i])
        {
            printf("%d ERROR
    ",i);
        }
        }
        return 0;
    }
    
    
    /***************************************************
    Result: Accepted
    Take time: 4ms
    Take Memory: 236KB
    ****************************************************/
  • 相关阅读:
    uva 10561 sg定理
    二进制下 求分数化小数的循环节问题
    zoj 2562 反素数
    uva 11916 解模方程a^x=b (mod n)
    Android 组件化方案探索与思考
    2018谷歌I/O开发者大会8大看点汇总 新品有哪些
    Glide高级详解—缓存与解码复用
    Android性能优化:手把手带你全面实现内存优化
    Android几种强大的下拉刷新库
    Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)
  • 原文地址:https://www.cnblogs.com/jkxsz2333/p/9491606.html
Copyright © 2011-2022 走看看