PTA数据结构与算法题目集(中文) 7-18
Posted 57one
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于PTA数据结构与算法题目集(中文) 7-18的主要内容,如果未能解决你的问题,请参考以下文章
PTA数据结构与算法题目集(中文) 7-36 社交网络图中结点的“重要性”计算 (30 分)