DS队列之银行排队

题目描述

在银行营业大厅共服务3种客户,类型为A\B\C,大厅分别设置了3个窗口分别服务三种客户,即每个窗口只服务一种客户。现有一批客户来银行办理业务,每个客户都有类型和办理业务时间。每个窗口按照客户到来的顺序进行服务。

编程实现它们的办理流程,请使用C++自带的queue必须使用队列实现,其他方法0分!

队列queue的用法如下:

1.包含头文件:#include

2.定义一个整数队列对象:queue myQe;

3.定义一个整数队列对象数组:queue myQA[10];

4.入队操作:myQe.push(itemp); //把整数itemp进入队列

5.出队操作:myQe.pop(); //把队头元素弹出队列,注意本操作不获取队头元素

6.获取队头元素: itemp = myQe.front(); // 把队头元素放入itemp中,注意本操作不弹出元素

7.判断队列是否为空:myQe.empty();//队列空则返回true,不空则返回false

输入

第一行输入先输入n表示客户数量

第二行输入每个客户的类型,数据之间用用空格隔开

第三行输入每个客户的办理时间,数据之间用用空格隔开

输出

第一行输出A类客户的平均办理时间

第二行输出B类客户的平均办理时间

第三行输出C类客户的平均办理时间

样例输入

8 A B C B C A A A 10 20 30 40 50 60 70 80

样例输出

55 30 40

提示

#include<iostream>
#include<queue>
using namespace std;
int main()
{
    int n;
    cin>>n;
    char *c=new char[n];
    int *t=new int[n];
    for(int i=0;i<n;i++)
        cin>>c[i];
    for(int i=0;i<n;i++)
        cin>>t[i];
    queue<int>QA;
    queue<int>QB;
    queue<int>QC;
    for(int i=0;i<n;i++)
    {
        if(c[i]=='A')
        {
            QA.push(t[i]);
        }
        else if(c[i]=='B')
        {
            QB.push(t[i]);
        }
        else if(c[i]=='C')
        {
            QC.push(t[i]);
        }
    }
    int timeA=0,timeB=0,timeC=0;
    int nA=0,nB=0,nC=0;
    while(!QA.empty())
    {
        timeA+=QA.front();
        QA.pop();
        nA++;
    }
    while(!QB.empty())
    {
        timeB+=QB.front();
        QB.pop();
        nB++;
    }
    while(!QC.empty())
    {
        timeC+=QC.front();
        QC.pop();
        nC++;
    }
    timeA/=nA;
    timeB/=nB;
    timeC/=nC;
    cout<<timeA<<endl;
    cout<<timeB<<endl;
    cout<<timeC<<endl;
    delete []c;
    delete []t;
    return 0;
}

原文链接: https://www.cnblogs.com/SZU-DS-wys/p/12180710.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/191795

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午5:50
下一篇 2023年2月12日 下午5:50

相关推荐