STL练习-ACboy needs your help again!
he miss his mother very much and is very scare now.You can't image how dark the room he was put into is, so poor :(.
As a smart ACMer, you want to get ACboy out of the monster's labyrinth.But when you arrive at the gate of the maze, the monste say :" I have heard that you are very clever, but if can't solve my problems,
The problems of the monster is shown on the wall:
Each problem's first line is a integer N(the number of commands), and a word "FIFO" or "FILO".(you are very happy because you know "FIFO" stands for "First In First Out", and "FILO" means "First In Last Out").
and the following N lines, each line is "IN M" or "OUT", (M represent a integer).
and the answer of a problem is a passowrd of a door, so if you want to rescue ACboy, answer the problem carefully!
4
4 FIFO
IN 1
IN 2
OUT
OUT
4 FILO
IN 1
IN 2
OUT
OUT
5 FIFO
IN 1
IN 2
OUT
OUT
OUT
5 FILO
IN 1
IN 2
OUT
IN 3
OUT
Sample Output
1
2
2
1
1
2
None
2
3
分别定义一个栈和一个队列,输入FIFO即先入先出,操作队列,输入FILO即先入后出,操作栈。
1 #include<iostream>
2 #include<stack>
3 #include<queue>
4 using namespace std;
5 int main()
6 {
7 stack<int> s;
8 queue<int> q;
9 int n;
10 cin>>n;
11 while(n--)
12 {
13 int m;
14 string s1;
15 cin>>m>>s1;
16 while(!s.empty())s.pop();//循环开始清空栈和队列
17 while(!q.empty())q.pop();
18 if(s1=="FIFO")//先入先出操作队列
19 {
20 for(int i=0;i<m;i++)
21 {
22 string s2;int num;
23 cin>>s2;
24 if(s2=="IN"){cin>>num;q.push(num);}//入队
25 if(s2=="OUT"){
26 if(q.empty())cout<<"None"<<endl;//队列为空不能"OUT",输出None
27 else
28 {
29 cout<<q.front()<<endl;//q.front()取队头值
30 q.pop();//无返回值,借助q.front()获得队头值
31 }
32 }
33 }
34 }
35 if(s1=="FILO")
36 {
37 for(int i=0;i<m;i++)
38 {
39 string s2;int num;
40 cin>>s2;
41 if(s2=="IN"){cin>>num;s.push(num);}//入栈
42 if(s2=="OUT"){
43 if(s.empty())cout<<"None"<<endl;//栈为空时
44 else
45 {
46 cout<<s.top()<<endl;s.pop();//s.pop()无返回值,借助s.top()获得栈顶元素
47 }
48
49 }
50 }
51 }
52
53 }
54 return 0;
55 }
STL练习-ACboy needs your help again!的更多相关文章
- (hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)
题目: ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- hdoj 1702 ACboy needs your help again!【数组模拟+STL实现】
ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- hdu1702 ACboy needs your help again![简单STL 栈 队列]
目录 题目地址 题干 代码和解释 参考 题目地址 hdu1702 题干 代码和解释 本题很简单,只要掌握STL stack和STL vector的语法即可作答.记录本题是为了记录STL vector的 ...
- stl 题目总结
stl 题目总结 一.圆桌问题 1 .问题: 圆桌上围坐着2n个人.其中n个人是好人,另外n个人是坏人.如果从第一个人开始数数,数到第m个人,则立即处死该人:然后从被处死的人之后开始数数,再将数到的第 ...
- 详细解说 STL 排序(Sort)
0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算 ...
- STL标准模板库(简介)
标准模板库(STL,Standard Template Library)是C++标准库的重要组成部分,包含了诸多在计算机科学领域里所常见的基本数据结构和基本算法,为广大C++程序员提供了一个可扩展的应 ...
- STL的std::find和std::find_if
std::find是用来查找容器元素算法,但是它只能查找容器元素为基本数据类型,如果想要查找类类型,应该使用find_if. 小例子: #include "stdafx.h" #i ...
- STL: unordered_map 自定义键值使用
使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...
- C++ STL简述
前言 最近要找工作,免不得要有一番笔试,今年好像突然就都流行在线笔试了,真是搞的我一塌糊涂.有的公司呢,不支持Python,Java我也不会,C有些数据结构又有些复杂,所以是时候把STL再看一遍了-不 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
随机推荐
- python读取文本中的字典
首先得明确文本的每行是存的json或者用python的write(str(一个字典))写入的,那么不用借助json模块就能读取为字典,使用eval函数就行,json只能处理带双引号的字符串,但很多时候 ...
- vue-购物车的部分
定义一个局部组件 分成三个部分 Vue.component('my-cart',{ template: ` <div class='cart'> <cart-title>< ...
- C# List GroupBy and Sum
List<PartRequest> partRequests = new List<PartRequest>(); partRequests.Add(new PartReque ...
- Java中的左移、右移详细分析
转自csdn--https://blog.csdn.net/weixin_42408447/article/details/125914449 前提:<<(左移),>>(右移) ...
- java技术系列(二) 反射
能够分析类能力的程序称为反射. 反射能力: 在运行中分析类的能力. 在运行中查看对象,例如:编写一个toString方法供所有类使用. 实现通用的数组操作代码. 利用Method对象.
- 封装python代码,避免被轻易反编译
可使用Cython对python代码进行封装,封装成.pyd库,大致流程可参考: cython打包py成pyd,pyinstaller打包uvicorn服务过程记录_Bolly_He的博客-CSDN博 ...
- win10事件查看器出现10016错误的解决办法
该错误一般会重复出现在事件查看器,严重的会导致系统卡死. 以解决下列错误为例,给出步骤: 注意记录用户(划掉的部分)及要添加的权限(本例为"本地激活"权限) 1.运行regedit ...
- call与apply的区别与共同点
call与apply区别 共同点:都会立即执行函数 call:是以逗号为间隔,传递多个参数 apply:是以数组来进行传递多个参数
- spring security 从零开始搭建
1.引入 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring ...
- yzh 总线选讲
分布式:通过总线,我们可以用"通信""消息"等视角,把各个模块拆成各个小状态机,每个小状态机互相之间独立,通过总线通信 集中式:通过一个大状态机生成所有控制信号 ...