概述
解析:
先开一个数组专门记录编号的
开两个队列。一个存储编号为x的队列存的数,一个存储编号(方便得知哪个编号在前)
对于插入操作:
找出数x的编号pos,把x放到编号为pos的队列中,然后编号pos放到编号队列中
对于出队操作:
找出编号队列中队头元素为pos ,那么编号为pos的队列出队一个元素。
如果编号为pos的队列为空,那么编号队列就要删除该编号(出队)
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10,M=1010;
int id[N];
int t,cnt,x,k;
int main()
{
while(cin>>t,t)
{
queue<int> teamid,person[M];
printf("Scenario #%dn",++k);
for(int i=1;i<=t;i++)
{
cin>>cnt;
while(cnt--)
{
cin>>x;
id[x]=i;
}
}
string s;
while(cin>>s,s!="STOP")
{
if(s=="ENQUEUE")
{
cin>>x;
int pos=id[x];
if(person[pos].empty()) teamid.push(pos);
person[pos].push(x);
}
else
{
int pos=teamid.front();
cout<<person[pos].front()<<endl;
person[pos].pop();
if(person[pos].empty()) teamid.pop();
}
}cout<<endl;
}
}
最后
以上就是威武河马为你收集整理的小组队列-------------------------思维(队列)的全部内容,希望文章能够帮你解决小组队列-------------------------思维(队列)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复