走进舒适圈の小窝

Loading...

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());
        }
    }
}
posted @ 2024-12-08 17:41  走进舒适圈  阅读(2)  评论(0编辑  收藏  举报