7-18 银行业务队列简单模拟 (25 分)
设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。

输入格式:
输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔。输出格式:
按业务处理完成的顺序输出顾客的编号。数字间以空格分隔,但最后一个编号后不能有多余的空格。输入样例:
8 2 1 3 9 4 11 13 15
输出样例:
1 3 2 9 11 4 13 15

解析:这道题单从题目我们就可以得知可以通过构造队列求解;除此之外我们还可以知道它所涉及的队列运用的都是基础的知识就可以解决的。利用队列的先进先出原则,这道题可以很容易求解,不过需要注意的是来的顾客需要考虑特殊情况:最基本的情况就是既有偶数,也有奇数,偶数顾客一次输出两个,奇数顾客一次输出一个,如果它们输出的次数长短不一样,就直接将多余的全部输出即可;比较特殊的情况就是只有奇数顾客或者只有偶数顾客,当然这在编程的时候必须分为两种情况来讨论。不管是一般情况还是特殊情况,我们都需要注意它的输出格式,也就是第一个输出前面没有空格,且最后一个输出后面无空格输出。要不然会有一个两分的测试点无法通过(格式错误)。闲话不多说,正确代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){queue<int>p,q;
int n,i=0,m,g=0,h=0,j;
cin>>n;
while(n--){cin>>m;
if(m%2==0){p.push(m);
}
else{q.push(m);}
}
g=p.size();
h=q.size();
i=0;
while(h&&g)
{
if(i==0){cout<<q.front();
q.pop();
i++;
cout<<' ';
cout<<q.front();
q.pop();
}
else{cout<<' ';
cout<<q.front();
q.pop();
i++;
cout<<' ';
cout<<q.front();
q.pop();
}
h-=2;
if(g>0){cout<<' ';
cout<<p.front();
p.pop();
g--;
}
}
while(h&&!g){if(i==0) cout<<q.front();
else{cout<<' ';
cout<<q.front();
}
q.pop();
h--;
}
while(g&&!h){if(i==0) cout<<p.front();
else{cout<<' ';
cout<<p.front();}
p.pop();
g--;
}
cout<<endl;
return 0;
}

7-18 银行业务队列简单模拟 (25 分)相关推荐

  1. 银行业务队列简单模拟 (25 分)c语言c++

    7-2 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银 ...

  2. 7-45 银行业务队列简单模拟 (10 分)

    7-45 银行业务队列简单模拟 (10 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达 ...

  3. 7-4 银行业务队列简单模拟 (15 分)

    ** 7-4 银行业务队列简单模拟 (15 分) ** 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客 ...

  4. 银行业务队列简单模拟Java程序设计_PTA 数据结构 银行业务队列简单模拟

    仅供参考,请勿粘贴 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完 ...

  5. PTA: 7-2 银行业务队列简单模拟 (25 分)

    大一下半期数据结构 数据结构题目集 7-2 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客 ...

  6. 7-18 银行业务队列简单模拟

    7-18银行业务队列简单模拟 完整题目 **输入格式:** **输出格式:** **输入样例:** **输出样例:** **具体思路** **完整代码实现:** 我的一些问题 完整题目 设某银行有A. ...

  7. 7-1 银行业务队列简单模拟 (25 分)

    题目: 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出 ...

  8. (原创)7-1 银行业务队列简单模拟 (30 分)

    设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列 ...

  9. 银行业务队列简单模拟(队列queue)

    设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列 ...

最新文章

  1. Python Open Source Project List
  2. 蚂蚁移动开发平台 mPaaS 3.0 智能化 + 生态化
  3. Mybatis3源码分析(05)-加载Configuration-加载MappedStatement
  4. webuploader在bootstrap模态对话框中选择文件按钮无效的问题
  5. [python调试笔记] 编译运行h5py
  6. HDFS HA模式下支持只连接其中Active的NameNode
  7. 配置 mybatis的 log4j.properties
  8. P4351-[CERC2015]Frightful Formula【组合数学,MTT】
  9. php提示是否运行,php运行错误提示
  10. 莱斯大学找到了多被提升3G/4G网络性能的方法
  11. Spring Data Jpa出现Not supported for DML operations
  12. php为什么发送不到sql,PHP-为什么我的Ajax无法执行我的SQL查询?
  13. python dict下标_牛鹭学院:必须掌握的Python数据结构知识
  14. cmake:cmake_policy命令
  15. 【Python表白小程序】表白神器——赶紧收藏起来~
  16. 卡内基梅隆大学计算机方向,留学美国卡内基梅隆大学计算机硕士研究方向
  17. 【计算机视觉】图像拼接技术
  18. 风力机叶片气动设计 matlab 程序,基于MATLAB的小型风力机叶片设计
  19. RK3288 OTG切换为Host模式
  20. Mysql中空字符''和空值null的区别

热门文章

  1. Cannot input a tensor of dimension other than 0 as a scalar argument
  2. AttributeError: module ‘matplotlib’ has no attribute ‘artist’
  3. asio 异步demo
  4. pytorch one-hot转数组
  5. vs编译cuda DLL
  6. cannot be registered to your development team. Change your bundle identifier to a unique string to t
  7. 运动检测(前景检测)之——ViBe
  8. 循环矩阵傅里叶对角化
  9. 多多点金——青龙羊毛
  10. java.security_Java开发网 - java.security.NoSuchAlgorithmException 问题的一些解决