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

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1466&cid=1182

    题目描述

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

    输入

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

    输出

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

    示例输入

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

    示例输出

    3
    7 ERROR

    queue函数真的很好用。。。。。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<queue>
     6 using namespace std ;
     7 int main()
     8 {
     9     deque<int>q ;
    10     int M ;
    11     scanf("%d",&M) ;
    12     char ch[21] ;
    13     int a ;
    14     int flag[100001] ;
    15     memset(flag,0,sizeof(flag)) ;
    16     for(int i = 1 ; i <= M ; i++)
    17     {
    18         scanf("%s",ch) ;
    19         if(strcmp(ch,"LIN") == 0)
    20         {
    21             scanf("%d",&a) ;
    22             q.push_front(a) ;
    23         }
    24         else if(strcmp(ch,"RIN") == 0)
    25         {
    26             cin>>a ;
    27             q.push_back(a) ;
    28         }
    29         else if(strcmp(ch,"LOUT") == 0)
    30         {
    31             if(q.empty())
    32             {
    33                 flag[i] = 1 ;
    34 
    35             }
    36             else
    37                 q.pop_front() ;
    38         }
    39         else if(strcmp(ch,"ROUT") == 0)
    40         {
    41             if(q.empty())
    42                 flag[i] = 1 ;
    43             else
    44                 q.pop_back() ;
    45         }
    46     }
    47     int aa = q.front() ;
    48     q.pop_front() ;
    49     printf("%d",aa) ;
    50     while(!q.empty())
    51     {
    52         int aa = q.front() ;
    53         q.pop_front() ;
    54         printf(" %d",aa) ;
    55     }
    56     cout<<endl ;
    57     for(int i = 1 ; i <= M ; i++)
    58     {
    59         if(flag[i])
    60             cout<<i<<" ERROR"<<endl ;
    61     }
    62     return 0 ;
    63 }
    View Code
  • 相关阅读:
    软工实践寒假作业(2/2)
    Java 内存溢出分析
    个人作业——软件工程实践总结&个人技术博客
    个人作业——软件测评
    结对第二次作业——某次疫情统计可视化的实现
    结对第一次作业-疫情统计可视化(原型设计)
    软工实践寒假作业(2/2)
    软工实践寒假作业(1/2)
    个人作业——软件工程实践总结&个人技术博客
    配合springboot的快速运维脚本
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3168697.html
Copyright © 2011-2022 走看看