首页 > 求助:猫狗队列问题超时。
头像
JinYang_557
编辑于 2020-06-15 22:38
+ 关注

求助:猫狗队列问题超时。

通过率80%了,但是运行超时,不知道咋改了。
#include <queue>
#include <string>
#include <iostream>
using namespace std;

class Pet
{
public:
    string type;
    int id;//编号
    int count;//顺序
    Pet(string type,int id):type(type),id(id){}
    string getType()
    {
        return type;
    }
    int getId()
    {
        return id;
    }
    int getCount()
    {
        return count;
    }
    void setCount(int count)
    {
        this->count = count;
    }
};


class Solution
{
private:
    queue<Pet> DogQueue;
    queue<Pet> CatQueue;
    int count = 0;//总数
public:
    void add(Pet p)
    {
        p.setCount(++count);
        if(p.getType() == "dog")
        {
            DogQueue.push(p);
        }
        else if(p.getType() == "cat")
        {
            CatQueue.push(p);
        }
    }
    void pollAll()
    {
        while(!(DogQueue.empty() && CatQueue.empty()))
        {
            if(DogQueue.empty())
            {
                cout << CatQueue.front().getType() << " " << CatQueue.front().getId() << endl;
                CatQueue.pop();
            }
            else if(CatQueue.empty())
            {
                cout << DogQueue.front().getType() << " " << DogQueue.front().getId() << endl;
                DogQueue.pop();
            }
            else
            {
                if(DogQueue.front().getCount() < CatQueue.front().getCount())
                {
                    cout << DogQueue.front().getType() << " " << DogQueue.front().getId() << endl;
                    DogQueue.pop();
                }
                else
                {
                    cout << CatQueue.front().getType() << " " << CatQueue.front().getId() << endl;
                    CatQueue.pop();
                }
            }
        }
    }
    void pollDog()
    {
        while(!DogQueue.empty())
        {
            cout << DogQueue.front().getType() << " " << DogQueue.front().getId() << endl;
            DogQueue.pop();
        }
    }
    void pollCat()
    {
        while(!CatQueue.empty())
        {
            cout << CatQueue.front().getType() << " " << CatQueue.front().getId() << endl;
            CatQueue.pop();
        }
    }
    bool isEmpty()
    {
        return DogQueue.empty() && CatQueue.empty();
    }
    bool isDogEmpty()
    {
        return DogQueue.empty();
    }
    bool isCatEmpty()
    {
        return CatQueue.empty();
    }
};

static Solution obj;

int main()
{
    int n;//操作总数
    int id;//宠物编号
    string s;//操作名
    string type;//宠物类型
    cin >> n;
    while(n--)
    {
        cin >> s;
        if(s == "add")
        {
            cin >> type;
            cin >> id;
            obj.add(Pet(type,id));
        }
        else if(s == "pollAll")
        {
            obj.pollAll();
        }
        else if(s == "pollDog")
        {
            obj.pollDog();
        }
        else if(s == "pollCat")
        {
            obj.pollCat();
        }
        else if(s == "isEmpty")
        {
            if(obj.isEmpty())
            {
                cout << "yes" << endl;
            }
            else
            {
                cout << "no" << endl;
            }
        }
        else if(s == "isDogEmpty")
        {
            if(obj.isDogEmpty())
            {
                cout << "yes" << endl;
            }
            else
            {
                cout << "no" << endl;
            }
        }
        else if(s == "isCatEmpty")
        {
            if(obj.isCatEmpty())
            {
                cout << "yes" << endl;
            }
            else
            {
                cout << "no" << endl;
            }
        }
    }
    return 0;
}


全部评论

(0) 回帖
加载中...
话题 回帖

相关热帖

近期热帖

近期精华帖

热门推荐