zoukankan      html  css  js  c++  java
  • PTA数据结构与算法题目集(中文) 7-18

    PTA数据结构与算法题目集(中文)  7-18

    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
    题目分析:一道简单的利用队列的题 没什么需要注意的点 用这些基础题练手后 要学会使用STL 自己手写堆栈 麻烦不说 还可能出错
     1 #define _CRT_SECURE_NO_WARNINGS
     2 #include<stdio.h>
     3 #define Size 1000
     4 int Queue[Size];
     5 int Rear = 0;
     6 int Front = 1;
     7 int size;
     8 int Succ(int num)
     9 {
    10     if (num == Size)
    11         return 0;
    12     else
    13         return num;
    14 }
    15 void EnQueue(int num)
    16 {
    17     Rear = Succ(Rear + 1);
    18     Queue[Rear] = num;
    19     size++;
    20 }
    21 int DeQueue()
    22 {
    23     int num = Queue[Front];
    24     Front = Succ(Front + 1);
    25     size--;
    26     return num;
    27 }
    28 int IsEmpty()
    29 {
    30     return size == 0;
    31 }
    32 
    33 int main()
    34 {
    35     int sum,sum1;
    36     int N=0, M=0;
    37     int A[1000] = { 0 };
    38     int B[1000] = { 0 };
    39     scanf("%d", &sum);
    40     sum1 = sum;
    41     while (sum--)
    42     {
    43         int num;
    44         scanf("%d", &num);
    45         if (num % 2)
    46             A[N++] = num;
    47         else
    48             B[M++] = num;
    49     }
    50     int i = 0, j = 0;
    51     while (i<N||j<M)
    52     {
    53         for(int k=2;k>0&&i<N;k--)
    54         {
    55             EnQueue(A[i]);
    56             i++;
    57         }
    58         if (j<M)
    59         {
    60             EnQueue(B[j]);
    61             j++;
    62         }
    63     }
    64     int Flag = 0;
    65     while (!IsEmpty())
    66     {
    67         if (Flag == sum1 - 1)
    68             break;
    69         printf("%d ", DeQueue());
    70         Flag++;
    71     }
    72     printf("%d", DeQueue());
    73     return 0;
    74 }
    View Code
  • 相关阅读:
    生成器笔记
    迭代器笔记
    hashilib_module
    Ubuntu操作及各种命令笔记
    python正则表达式2
    python正则表达式1
    python文件操作(with关键字)
    python文件操作
    python包
    python模块
  • 原文地址:https://www.cnblogs.com/57one/p/11626730.html
Copyright © 2011-2022 走看看