http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3210
给出输入和输出序列,判断输出序列是stack还是queue
暴力模拟
#include<iostream>
#include<cstdio>
#include<set>
#include<string>
#include<string.h>
#include<cstring>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<cctype>
#include<algorithm>
#include<sstream>
#include<utility>
#define mt(a) memset(a,0,sizeof (a))
#define fl(a,b,c) fill(a,b,c)
#define SWAP(a,b,t) (t=a,a=b,b=t)
#define inf 1000000000+7
using namespace std;
stack<int>s;
queue<int>q;
int a[120];
int main()
{
int T;
cin >> T;
while (T--)
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
int temp;
cin >> temp;
s.push(temp);
q.push(temp);
}
int flag1 = 1,flag2=1;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
for (int i = 0; i < n; i++)
{
if (a[i] != q.front())flag1 = 0;
q.pop();
if (a[i] != s.top())flag2 = 0;
s.pop();
}
if (flag1&&flag2)cout << "both" << endl;
else if (flag1)cout << "queue" << endl;
else if (flag2)cout << "stack" << endl;
else cout << "neither" << endl;
}
return 0;
}