CLZ银行问题
CLZ银行问题
题目描述
CLZ 银行只有两个接待窗口,VIP 窗口和普通窗口,VIP用户进入 VIP 窗口排队,剩下的进入普通窗口排队。现有M 次操作,操作有四种类型,如下:
- IN name V:表示一名叫 name 的用户到 VIP 窗囗排队
- OUT V:表示 VIP 窗口队头的用户离开排队
- IN name N:表示一名叫 name 的用户到普通窗口排队
- OUT N:表示普通窗口队头的用户离开排队
求 M 次操作结束后 VIP 窗口队列和普通窗口队列中的姓名。
输入描述
第一行是一个整数 M(1≤ M ≤ 1000),表示一共有 M次操作。
第二行到第 M +1行输入操作,格式如下
- IN name V
- OUT V
- IN name N
- OUT N
输出描述
输出 I 次操作后 VIP 窗囗队列和普通窗口队列中的姓名(从头到尾),先输出 VIP窗口队列后输出普通窗口队列。
输入输出样例
示例 1
输入
5 IN xiaoming N IN Adel V IN laozhao N OUT N IN CLZ V
输出
Adel CLZ laozhao
思路分析
根据题目要求可知,用户成员为先进先出,所以使用队列来存储;再做多次对比判断:操作类型、用户名、用户类型,进行不同操作。
解答
import java.util.*; public class Main { static Queue<String> v = new LinkedList<>(); //存储VIP用户 static Queue<String> p = new LinkedList<>(); //存储普通用户 public static void main(String[] args){ Scanner sc = new Scanner(System.in); int m = sc.nextInt(); //m次操作 while (m > 0){ m--; String op,name,type; op = sc.next(); if (op.contains("IN")){ name = sc.next(); type = sc.next(); if (type.contains("V")){ v.offer(name); }else p.offer(name); }else { type = sc.next(); if (type.contains("V")){ v.poll(); }else p.poll(); } } while (v.size() != 0){ System.out.println(v.poll()); } while (p.size() != 0){ System.out.println(p.poll()); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律