我是靠谱客的博主 单纯大门,最近开发中收集的这篇文章主要介绍Team Queue(queue,map应用),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目链接: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应用)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部