ACboy needs your help again! (队列问题)

这是一个关于使用FIFO(队列)和FILO(栈)数据结构解决ACboy从怪物迷宫中逃脱问题的编程挑战。题目要求根据输入的FIFO或FILO指令,处理IN和OUT操作,输出相应的整数值或None。AC代码展示了如何利用C++实现这一逻辑,通过队列和栈处理输入和输出的顺序。

 ACboy needs your help again!

目录

 ACboy needs your help again!

题意描述:多实例,根据输入单词是"FIFO"或"FILO",即是queue还是stack以及输入in 求每个命令"OUT",应该输出的整数,没有任何整数输出“None"。 

解题思路:分两个大方向fifo为队列先进先出、filo栈先进后出,然后当in时再输入数字加入队列、栈顶,out时若建立的队列和栈不空时,根据队列和栈的输出格式进行输出;当栈或队列里面元素为空时,输出None。

AC代码


 HDU - 1702

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.

ACboy被绑架了!!
他非常想念他的母亲,现在非常害怕。你无法想象他被关进的房间有多黑,太穷了:(。
作为一个聪明的 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; 
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值