• 2.2 银行业务队列简单模拟


     主要是末尾不带空格,所以先分类输出第一段,后面固定格式为空格+数字。

    设某银行有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

     

    1. #include
    2. #include
    3. #define N 1005
    4. int A[N], B[N];
    5. int main() {
    6. int n, ra = 0, rb = 0;
    7. scanf("%d", &n);
    8. while(n --) {
    9. int x;
    10. scanf("%d", &x);
    11. if(x % 2) A[++ ra] = x;
    12. else B[++ rb] = x;
    13. }
    14. int i = 1, j = 1;
    15. if(ra >= 2) {
    16. printf("%d %d", A[i], A[i+1]);
    17. i += 2;
    18. }
    19. else if(ra == 1) printf("%d", A[i++]);
    20. else printf("%d", B[j ++]);
    21. while(i <= ra && j <= rb) {
    22. printf(" %d", B[j ++]);
    23. printf(" %d", A[i ++]);
    24. if(i <= ra) printf(" %d", A[i ++]);
    25. }
    26. while(i <= ra) printf(" %d", A[i ++]);
    27. while(j <= rb) printf(" %d", B[j ++]);
    28. return 0;
    29. }
    30. /*
    31. A 1 3 9 11 13 15
    32. B 2 4
    33. A 1 3
    34. B 1
    35. */
    '
    运行

     

  • 相关阅读:
    PPT文件丢失怎么办?这4个恢复方法记得收藏好!
    说说 event loop
    kettle pan.sh如何后台运行
    第六篇:常用Linux命令
    TypeError: Cannot read properties of undefined (reading ***)
    手摸手教你定制 Spring Security 表单登录
    贪心算法求解活动安排问题
    tcpdump进行IP抓包
    Socket网络编程——(一)
    李沐推荐的算法入门书分享,有动画图解、能运行、可讨论
  • 原文地址:https://blog.csdn.net/qq_38236082/article/details/127119827