9-3 Team Queue
这道题目的意思就是:每个队里面有一些数字,然后按照数字的进入的顺序分别给每个队里面的数字排序,然后需要注意的是需要按照这些数字所在的队的顺序输出。
用一个map记录每个数字的组号;
用一个queue来记录组的进入的先后;
用一个queue数组记录每个队的数字的进入的顺序;
//
// main.cpp
// 9-2
//
// Created by 刘斯宇 on 2018/12/17.
// Copyright © 2018 刘斯宇. All rights reserved.
//
#include <iostream>
#include<unordered_map>
#include<string>
#include<map>
#include<queue>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
int main()
{
int number;
int cnt=1;
while(cin>>number&&number)
{
cout<<"Scenario #"<<cnt++<<endl;
map<int,int>index;
queue<int>team;
vector<bool>visited(1005,false);
queue<int>team_num_order[1005];
int i=0;
while(i++!=number)
{
int num;
cin>>num;
while(num--)
{
int tt;
cin>>tt;
index[tt]=i;
}
}
string tt;
while(cin>>tt&&tt!="STOP")
{
if(tt=="ENQUEUE")
{
int shu;
cin>>shu;
if(!visited[index[shu]])
{
visited[index[shu]]=1;
team.push(index[shu]);
}
team_num_order[index[shu]].push(shu);
}
else if(tt=="DEQUEUE")
{
int t=team.front();
cout<<team_num_order[t].front()<<endl;
team_num_order[t].pop();
if(team_num_order[t].empty())
{
team.pop();
visited[t]=0;
}
}
}
}
}
visited[t]=0;
这段代码的意义是因为不是所有的数字都进队了就输出,会出现中途输出的情况。