本文主要是介绍例题:团体队列(UVa 540),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【题意】
有t个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会被排到长队的队尾。
输入每个团队中所有队员的编号,要求支持如下3中指令:
ENQUEUE x:编号为x的人进入长队
DEQUEUE:长队的队首出队
STOP:停止模拟
对于每个DEQUEUE指令,输出出队的人的 编号。
【代码】
#include<cstdio>
#include<queue>
#include<map>
using namespace std;const int maxt = 1000 + 10;int main()
{int t, kase = 0;while (scanf("%d", &t) == 1 && t){printf("Scenario #%d\n", ++kase);//记录所有人的团队编号map<int, int> team;for (int i = 0; i < t; i++){int n, x;scanf("%d", &n);while (n--){scanf("%d", &x);team[x] = i;}}//模拟queue<int> q, q2[maxt];//q是团队的队列,而q2[i]是团队i成员的队列for (;;){int x;char cmd[10];scanf("%s", cmd);if
这篇关于例题:团体队列(UVa 540)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!