我是靠谱客的博主 精明胡萝卜,最近开发中收集的这篇文章主要介绍紫书 queue 团体队列(Team Queue,UVa540)代码及讲解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

t 个团队的人正在排一个长队。每次新来一个人时,如果他有队友在排队,那么这个
新人会插队到最后一个队友的身后。如果没有任何一个队友排队,则他会排到长队的队尾。
输入每个团队中所有队员的编号,要求支持如下 3 种指令(前两种指令可以穿插进
行)。
ENQUEUEx :编号为 x 的人进入长队。
DEQUEUE :长队的队首出队。
STOP :停止模拟。
对于每个 DEQUEUE 指令,输出出队的人的编号。 
Sample Input 
  2 
  3 101 102 103 
  3 201 202 203 
  ENQUEUE 101 
  ENQUEUE 201 
  ENQUEUE 102 
  ENQUEUE 202 
  ENQUEUE 103 
  ENQUEUE 203 
  DEQUEUE 
  DEQUEUE 
  DEQUEUE 
  DEQUEUE 
  DEQUEUE 
  DEQUEUE 
  STOP 
  2 
  5 259001 259002 259003 259004 259005 
  6 260001 260002 260003 260004 260005 260006 
  ENQUEUE 259001 
  ENQUEUE 260001 
  ENQUEUE 259002 
  ENQUEUE 259003 
  ENQUEUE 259004 
  ENQUEUE 259005 
  DEQUEUE 
  DEQUEUE 
  ENQUEUE 260002 
  ENQUEUE 260003 
  DEQUEUE 
  DEQUEUE 
  DEQUEUE 
  DEQUEUE 
  STOP 
  0 
  Sample Output 
  Scenario #1 
  101 
  102 
  103 
  201 
  202 
  203 
  Scenario #2 
  259001 
  259002 
  259003 
  259004 
  259005 
  260001
 
 
 
#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 #%dn", ++kase); //记录所有人的团队编号 
    map<int, int> team; //t eam[x]表示编号为x的人所在的团队编号 
    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成员的队列 
     while(1)
       { int x;
        char cmd[10]; 
        scanf("%s", cmd); //输入执行命令 
        if(cmd[0] == 'S') break;
         else if(cmd[0] == 'D')
          {
      int t = q.front();
      printf("%dn", q2[t].front()); //输出首个编号 
     q2[t].pop(); //编号之前的删除 
     if(q2[t].empty()) q.pop(); //团体t全体出队列 
      }
      else if(cmd[0] == 'E')
      { scanf("%d", &x); 
   int t = team[x]; //t为团队编号 
   if(q2[t].empty()) q.push(t); //团队t进入队列
    q2[t].push(x); //插入队列 
     }
     }
     printf("n");
      }
      return 0; 
      }
 
 
 记事本

队列创建:queue <int> queue1;

(这里的int可以是各种类型,包括结构体类型)

加入队列:queue1.push(x);

(将x添加到队列的末尾)

弹出队列:queue1.pop();

(弹出队列的第一个元素)

访问队尾元素:queue1.back();

判断队列空:queue1.empty();

(当队列空时,返回true)

查看队列中的元素个数:queue1.size()

最后

以上就是精明胡萝卜为你收集整理的紫书 queue 团体队列(Team Queue,UVa540)代码及讲解的全部内容,希望文章能够帮你解决紫书 queue 团体队列(Team Queue,UVa540)代码及讲解所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部