概述
题目链接:132. 小组队列 - AcWing题库
题目分析:一个n,表示现在已知有几个队,然后列举每个队有几个人,都是谁,首先输出 Scenario #%d,之后三个命令:
ENQUEUE:编号为X的人进入长队。
DEQUEUE:长队队首出队。
STOP:停止。
对于每个DEQUEUE指令,输出出队的人的编号。
解题思路:需要将每个队都保存一起,用map就可以标记每个数字的队伍,然后判断用队列进行入队以及标记一下是否为自己队伍的第一个人。输出的时候就需要判断当前队伍是否还有人,没人的话输出下一个队伍。
实现代码
#include <iostream>
#include <queue>
#include <map>
#include <cstring>
using namespace std;
const int N = 1010;
int a[1050];
int main() {
int n;
int t=1;
while(cin >> n,n!=0) {
map<int,int> q;
memset(a,0,sizeof(a));
for(int i=0; i<n; i++) {
int p;
cin >> p;
for(int j=0; j<p; j++) {
int x;
cin >> x;
q[x]=i;
}
}
cout << "Scenario #" << t++ << endl;
string s;
queue<int> que[1010],que1;
while(cin >> s,s!="STOP") {
if(s[0]=='E') {
int x;
cin >> x;
que[q[x]].push(x);
if(a[q[x]]==0) {
que1.push(q[x]);
a[q[x]]=1;
}
} else {
cout << que[que1.front()].front() << endl;
que[que1.front()].pop();
if(que[que1.front()].empty()) {
a[que1.front()]=0;
que1.pop();
}
}
}
cout << endl;
}
}
最后
以上就是单纯大门为你收集整理的Team Queue(queue,map应用)的全部内容,希望文章能够帮你解决Team Queue(queue,map应用)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复