ACboy 再次需要你的帮助!

Hdu-1702

题目描述

ACboy被绑架了!!
他非常想念他的母亲,现在非常害怕。你无法想象他被关进的房间有多暗,:(太可怜了。
作为一个聪明的ACMer,你想把ACboy从怪物的迷宫里带出来。但当你到达迷宫之门时,怪物说:“我听说你很聪明,但如果不能解决我的问题,你就会和ACboy一起死。
怪物的问题显示在墙上:
每个问题的第一行是一个整数 N(命令数),以及一个单词“FIFO”或“FILO”。(你很高兴,因为你知道“FIFO”代表“先进先出”,而“FILO”的意思是“先进后出”)。
以及以下N行,每行分别为“IN M”或“OUT”,(M代表整数)。
而问题的答案是一扇门的通行证,所以如果你想拯救ACboy,请仔细回答问题!

输入

输入包含多个测试用例。
第一行有一个整数,表示测试用例的数量。
每个子问题的输入如上所述。

输出

对于每个命令“OUT”,您应该输出一个整数,具体取决于单词是“FIFO”或“FILO”,或者如果没有任何整数,则输出单词“None”。

示例输入

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

示例输出

1

2

2

1

1

2

None

2

3

代码

#include<iostream>
#include<stack>
#include<queue>
using namespace std;
int main()
{
	int n;
	cin>>n;//n个命令
	while(n--)
	{
		int m;
		string str;
		cin>>m>>str;
		if(str=="FIFO")//先进先出用队列queue
		{
			string str1;
			queue<int> Q;
			while(m--)
			{
				cin>>str1;
				if(str1=="IN")
				{
					int temp;
					cin>>temp;
					Q.push(temp);
				}
				else
				{
					if(Q.empty())
					{
						cout<<"None"<<endl;
					}
					else
					{
						cout<<Q.front()<<endl;
						Q.pop();
					}
				}
			}
		 }
		 else//先进后出用栈stack 
		 {
		 	string str1;
		 	stack<int> S;
		 	while(m--)
		 	{
		 		cin>>str1;
		 		if(str1=="IN")
		 		{
		 			int temp;
		 			cin>>temp;
		 			S.push(temp);
				 }
				 else
				 {
				 	if(S.empty())
				 	{
				 		cout<<"None"<<endl;
					 }
					 else
					 {
					 	cout<<S.top()<<endl;
					 	S.pop();
					 }
				 }
			 }
		 }
	 } 
	 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值