栈与队列精讲|银行业务队列简单模拟

发布时间:2026/11/13 6:31:40
栈与队列精讲|银行业务队列简单模拟 题目描述银行业务队列简单模拟设某银行有 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解析根据题意用两个队列模拟银行窗口处理业务输出顺序总是按照 A 先 B 后即 A 窗口先处理最多 2 个顾客B 窗口再处理最多 1 个顾客。#includeiostream #includecstdio #includequeue using namespace std; int first1; void print(int x){ if(first){ first0; printf(%d,x); } else printf( %d,x); } int main(){ queueint p1,p2; int n,x,w; scanf(%d,n); while(n--){ scanf(%d,x); if(x%2) p1.push(x); else p2.push(x); } while(1){ if(p1.empty()||p2.empty()) break; if(!p1.empty()){ wp1.front(); p1.pop(); print(w); } if(!p1.empty()){ wp1.front(); p1.pop(); print(w); } if(!p2.empty()){ wp2.front(); p2.pop(); print(w); } } while(!p1.empty()){ wp1.front(); p1.pop(); print(w); } while(!p2.empty()){ wp2.front(); p2.pop(); print(w); } }实际上还有一种比较特殊的队列称为双端队列在入队或出队操作时的位置可以是队头也可以是队尾经常和 BFS 结合起来解决一些常见的算法问题。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询