Uva540 Team Queue 【队列】【例题5-6】
2016-10-29 12:16
423 查看
题目: Team Queue
题意:有t个团队的人在排队,每次新来一个人时,如果他有队友在排队,那么他就会查到最后一个队友的身后,如果没人任何队友,则他会太刀长队队尾。
思路:不能按照题意一个长队进行分析,应该分开来,用俩个队列表示,团队号为一个队列,再分别每个团队为一个队列即数组队列。
(1) 首先输入时用map将每个人所在的团队号都标记上
(2)当有人来时,首先查看他说在的团队队列是否为空,如果空,则将此团队号进行入队团队队列,否则不入团队队列(因为已有本团队,即为插队!)。然后把此人入队 他所在的团队队列中。
(3)出队时,只需出团队号队列中的值,再分别将本团队的人出队,直到本团队为空时,将此团队号出团队号队列即可!
参考:入门经典--例5-6--P117
代码:
题意:有t个团队的人在排队,每次新来一个人时,如果他有队友在排队,那么他就会查到最后一个队友的身后,如果没人任何队友,则他会太刀长队队尾。
思路:不能按照题意一个长队进行分析,应该分开来,用俩个队列表示,团队号为一个队列,再分别每个团队为一个队列即数组队列。
(1) 首先输入时用map将每个人所在的团队号都标记上
(2)当有人来时,首先查看他说在的团队队列是否为空,如果空,则将此团队号进行入队团队队列,否则不入团队队列(因为已有本团队,即为插队!)。然后把此人入队 他所在的团队队列中。
(3)出队时,只需出团队号队列中的值,再分别将本团队的人出队,直到本团队为空时,将此团队号出团队号队列即可!
参考:入门经典--例5-6--P117
代码:
#include <iostream> #include <map> #include <queue> using namespace std; map<int,int>team;//存放人所在团队号:键是人的编号,值是团队号 int main() { int t,n,num,caseP = 1; while(cin >> t && t) { for(int i=1;i<=t;i++) { cin >> n; for(int j=0;j<n;j++) { cin >> num; team[num] = i;//存放人分别在哪个团队中 } } printf("Scenario #%d\n",caseP++); queue<int>teamNum,teamPeopel[1010];//teamNum是放团队号的队列,teamPeopel[]是分别放每个团队中的人 string cmd; while(cin >> cmd && cmd != "STOP") { int temp; if(cmd[0] == 'E') { cin >> num; temp = team[num]; if(teamPeopel[temp].empty())//如果本团队中没有人,插入队尾,即将团队号插入队尾 teamNum.push(temp); teamPeopel[temp].push(num); } if(cmd[0] == 'D') { temp = teamNum.front();//队首先获取团队号的 cout << teamPeopel[temp].front() << endl; teamPeopel[temp].pop();//分别按团队号进行出队 if(teamPeopel[temp].empty())//如果本团队全部出完,即将本团队号出队 teamNum.pop(); } } cout << endl; } return 0; }
相关文章推荐
- 例题5-6 UVA 540 Team Queue团体队列
- 《算法竞赛入门经典2ndEdition 》例题5-6 团体队列(Team Queue, Uva540)
- Team Queue UVA 540 (团体队列)
- 紫书章五例题六 团队队列 uva 540(queue)
- HDU 1387 && UVa 540 Team Queue(队列应用)
- UVA540 Team Queue(队列简单用法)
- uva 540 Team Queue(队列+模拟)
- Team Queue (uva540 队列模拟)
- Team Queue (uva540 队列模拟)
- UVa - 540 - Team Queue(STL - 队列queue)
- UVA540 Team Queue(模拟:队列)
- 团体队列UVA540 Team Queue(队列简单用法)
- UVA540:Team Queue(团体队列)
- 紫书章五例题六 团队队列 uva 540(queue)
- UVA 540 Team Queue(团体队列)
- uva 540 Team Queue (队列模拟)
- 紫书章五例题六 团队队列 uva 540(queue)
- uva540 Team Queue(模拟:队列)
- UVA 540 Team Queue(队列)
- 经典第五章 例 5-6 UVA 540 Team Queue(队列的简单应用)【queue】