我是靠谱客的博主 彩色画笔,最近开发中收集的这篇文章主要介绍例题5-6 团体队列 Team Queue UVA - 540,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

还好吧,刚开始没想明白用什么数据结构来做,后来才想到用一个队列和一个队列数组,一个存当前队伍的排队队列,另一个存每个在排队的队伍内部的人员队列。其他的set什么的,都不是最重要的内容了。

卡了我三个点:

1.忘了控制空队出队,空队排头了,导致了RE一次.在写了判定条件之后RE没了,成了WA—_—

2.这次WA是因为没有及时清除中间变量。是比较隐含的中间变量,表示某个队伍是否已在总队伍中的set,我在某只队伍最后一个成员从总队伍中出队后,没有清楚set中这支队伍的标记。也就是说,这支队伍其实不存在于总队伍了,但程序仍显示存在,就出错了。

3.隐含的空队排头,我把它放在了if判定条件里,所以每次检查到这里,我都只注意条件成立后的执行语句去了,就注意不到这一句,心里还一直认为它是正确的

学到了:

1.set可以直接用erase删除值为xx的元素,不一定非得结合迭代器

下面是代码

#include <bits/stdc++.h>
#define N 1005
using namespace std;
map<int,int> qnum;
set<int> sjud;
typedef queue<int> qi;
qi qq;          //标记当前总队列
qi cache[N];    //所有在排队的队伍的队员先后顺序,下标表示队伍号
void enqueue();
void dequeue();
int main()  {
    int n,m,num,cnt=0;
    cin>>n;
    while (n!=0)    {
        cout<<"Scenario #"<<++cnt<<endl;
        for (int i=0;i<n;i++)   {
            cin>>m;
            for (int j=0;j<m;j++) {
                cin>>num;
                qnum[num]=i;
            }
        }
        string opt="";
        cin>>opt;
        while (opt[0]!='S') {
            if (opt[0]=='E')    enqueue();
            else if (opt[0]=='D')   dequeue();
            cin>>opt;
        }
        cout<<endl;
        qnum.clear();
        sjud.clear();
        for (int i=0;i<n;i++)
            while (!cache[i].empty())   cache[i].pop();
        while (!qq.empty()) qq.pop();
        cin>>n;
    }
    return 0;
}

void enqueue()  {
    int nr;
    cin>>nr;
    if (!sjud.count(qnum[nr])){
        qq.push(qnum[nr]);
        sjud.insert(qnum[nr]);
    }
    cache[qnum[nr]].push(nr);
}

void dequeue()  {
    if (qq.empty()) return;
    if (!cache[qq.front()].empty()) {
        cout<<cache[qq.front()].front()<<endl;
        cache[qq.front()].pop();
    }
    if (cache[qq.front()].empty()&&!qq.empty())  {
        sjud.erase(qq.front());
        qq.pop();
    }
}

转载于:https://www.cnblogs.com/yichuan-sun/p/9695455.html

最后

以上就是彩色画笔为你收集整理的例题5-6 团体队列 Team Queue UVA - 540的全部内容,希望文章能够帮你解决例题5-6 团体队列 Team Queue UVA - 540所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部