ACboy needs your help again!
目录
题意描述:多实例,根据输入单词是"FIFO"或"FILO",即是queue还是stack以及输入in 求每个命令"OUT",应该输出的整数,没有任何整数输出“None"。
ACboy was kidnapped!!
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, you will die with ACboy."
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!
Input
The input contains multiple test cases.
The first line has one integer,represent the number oftest cases.
And the input of each subproblem are described above.
Output
For each command "OUT", you should output a integer depend on the word is "FIFO" or "FILO", or a word "None" if you don't have any integer.
他非常想念他的母亲,现在非常害怕。你无法想象他被关进的房间有多黑,太穷了:(。
作为一个聪明的 ACMer,你想把 ACboy 带出怪物的迷宫。但是当到了迷宫门口,怪物说:“我听说你很聪明,但如果不能解决我的问题,你会和ACboy一起死。”
怪物的问题显示在墙上:
每道题的第一行是一个整数N(命令的数量),和一个单词“FIFO”或“FILO”。(你很高兴,因为你知道“FIFO”代表“先进先出”,“FILO”表示“先进后出”)
和接下来的 N 行,每一行都是“IN M”或“
而问题的答案是一扇门的密码,所以如果你想拯救ACboy,请认真回答问题!
输入
输入包含多个测试用例。
第一行有一个整数,代表测试用例的数量。
并且上面描述了每个子问题的输入。
输出
对于每个命令“OUT”,您应该根据单词是“FIFO”还是“FILO”输出一个整数,如果没有任何整数,则应该输出一个单词“None”。
Sample Input
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",即是queue还是stack以及输入in 求每个命令"OUT",应该输出的整数,没有任何整数输出“None"。
解题思路:分两个大方向fifo为队列先进先出、filo栈先进后出,然后当in时再输入数字加入队列、栈顶,out时若建立的队列和栈不空时,根据队列和栈的输出格式进行输出;当栈或队列里面元素为空时,输出None。
AC代码
#include<cstdio>// #include<cstring> #include<queue> #include<stack> using namespace std; char ch[100]; int main(void) { int n,b; while(~scanf("%d",&n)) { while(n--) { int a; char str[100]; scanf("%d %s",&a,str); if(strcmp(str,"FIFO")==0)//que队列先进先出 { queue<int>q; for(int i=0;i<a;i++) { scanf("%s",ch); if(strcmp(ch,"IN")==0) //进入 { scanf("%d",&b); q.push(b);//队列入栈添加数据 } else//要求输出 { if(!q.empty()) //队列不为空就出队列 { printf("%d\n",q.front());//最早被存入队列的元素 q.pop(); } else printf("None\n"); } } } else if(strcmp(str,"FILO")==0)//sta栈先进后出 { stack<int>s;//设立一个栈储存·按顺序进栈的序列(一个空序列) for(int i=0;i<a;i++) { scanf("%s",ch); if(strcmp(ch,"IN")==0) //进入 { scanf("%d",&b); s.push(b);//入栈添加数据 } else//要求输出 { if(!s.empty()) //栈不为空就出栈 { printf("%d\n",s.top());//出 s.pop(); } else printf("None\n"); } } } } } return 0; }
这是一个关于使用FIFO(队列)和FILO(栈)数据结构解决ACboy从怪物迷宫中逃脱问题的编程挑战。题目要求根据输入的FIFO或FILO指令,处理IN和OUT操作,输出相应的整数值或None。AC代码展示了如何利用C++实现这一逻辑,通过队列和栈处理输入和输出的顺序。
350

被折叠的 条评论
为什么被折叠?



