hdu 1702 “ACBOY NEEDS YOUR HELP AGAGIN“

#include <iostream>
#include <queue>
#include <stack>
#include <string>
#include <vector>
//Problem Description
//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.
//
//
//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
using namespace std;
class solution3 {
public:
	queue<int>Q;
	stack<int>S;
	vector<string>show;//用于保存
	string sFlags,sInorOut;
	int iLoop,iSubLoop,iTarget;
	char* itos=new char[256];
	solution3();
};
solution3::solution3() {
	cin >> iLoop;//先输入 循环几次
	while (iLoop--) {
		cin >> iSubLoop>>sFlags;//内循环几次
		if(sFlags=="FIFO"){//先进先出 队列
			while (iSubLoop--)
			{
				cin >> sInorOut;
				if (sInorOut=="IN") {
					//进队列
					cin >> iTarget;
					Q.push(iTarget);
				}
				else {
					//出队列
					if (Q.empty()) {
						show.push_back("none");
					}
					else {
						sprintf_s(itos, 3,"%d", Q.front());
						show.push_back(itos);
						Q.pop();//出队列
					}
				}
			}
		}
		else {
			while (iSubLoop--)
			{
				//这个是栈
				cin >> sInorOut;
				if (sInorOut=="IN") {
					cin >> iTarget;
					S.push(iTarget);
				}
				else {
					if (S.empty()) {
						show.push_back("none");
					}
					else {
						sprintf_s(itos,3 ,"%d", S.top());
						show.push_back(itos);
						S.pop();
					}
				}
			}
		}
	}
	for (auto i = show.begin(); i != show.end(); i++) {
		cout << *i << endl;
	}
}
int main() {
	solution3 s1;
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值