Advertisement

数据结构与算法——银行应用队列基础模拟

阅读量:

题目描述
假设某银行有两个服务台(A、B),其服务速率存在差异。已知A号服务台的服务速率是B号服务台的两倍(即每当A服务台完成两个顾客的处理时,则B号服务台则完成一个顾客的服务)。现给定一个到达银行的顾客序列,请按照业务完成顺序输出该序列。假设忽略各顾客单独到达的时间间隔,并规定在不同服务台同时完成两人服务时(比如某一时刻两者均刚好完成两人),则优先输出来自A号队列的人。

输入是一行正整数值,在其中第一个数字N(不大于1000)表示总人数后跟的是每位客户的唯一标识码。这些标识码中奇数值的部分需安排至A服务窗口处理事务流程;而偶数值的部分则分配至B服务窗口进行服务操作。所有数据项之间均以单个空格分隔开来。

输出
按业务处理完成的顺序输出顾客的编号。数字间以空格分隔。

样例输入
8 2 1 3 9 4 11 13 15

样例输出
1 3 2 9 11 4 13 15

在解决这个问题时,必须考虑到可能存在其中一个窗口优先完成所有顾客的情况,并分两种情况进行分析:一种是A已经完成服务而B仍在服务中的情况;另一种是A尚未完成服务但B已完成服务的情况。

具体代码如下

复制代码
    #include <stdio.h>
    int main(){
    	int n;
    	scanf("%d",&n);
    	int a[n];
    	int 

全部评论 (0)

还没有任何评论哟~