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());
        }
    }
}
  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: `_builtin_clz` 是一个 C/C++ 内置函数,用于计算一个无符号整数的左侧零位数。它通常用于优化代码,因为它比使用循环来计算零位数更快。该函数可以在 GCC 和 Clang 编译器中使用。 函数原型如下: ```c++ int __builtin_clz(unsigned int x); ``` 该函数接受一个无符号整数参数 `x`,返回 `x` 的左侧零位数。如果输入为 0,则结果未定义。 例如,对于输入值为 0x80000000 的 32 位无符号整数,`_builtin_clz` 应该返回 0,因为该值的最高位为 1,其余位都为 0,左侧第一个零位位于最高位之后的 31 位位置。 ### 回答2: _builtin_clz是C/C++语言中的一个内置函数,它是一个位操作函数,用于统计一个32位整数中前导0的个数。 在位操作中,前导0是指从最高位开始连续的0,它们出现在最高位之前。_builtin_clz函数可以帮助我们快速地计算一个整数的前导0的个数。 这个函数接受一个32位无符号整数作为参数,并返回该整数中前导0的个数。返回值的范围是0到32,其中0表示整数的最高位为1,32表示整数全为0。 该函数的实现依赖于底层硬件的支持,会调用特定的CPU指令来计算前导0,因此可以在编译时进行优化,提高计算速度。它通常用于位操作、位运算、编码解码等相关的算法中,能够有效地优化代码性能。 例如,对于输入的整数x=7(二进制表示为0111),通过_builtin_clz函数计算,我们可以得到结果为29。这是因为整数x的二进制表示中前导0的个数是29个。 需要注意的是,由于_builtin_clz是一个内置函数,它依赖于特定的编译器实现和硬件支持。如果使用不同编译器或不同硬件平台,该函数的具体实现和行为可能会有所不同。 总而言之,_builtin_clz是一个用于统计32位整数中前导0的个数的内置函数,它可以提高代码的执行效率,常用于位操作相关的算法中。 ### 回答3: "_builtin_clz" 头文件是C语言中的一个内建函数,用于计算一个无符号整数的前导零的个数(即最高位0的个数)。它可以实现高效的位运算操作。 在计算机体系结构中,无符号整数的二进制表示从最高位开始,直到第一个非零位之前都是0。因此,计算前导零的个数可以用于确定该无符号整数的二进制表示中1的个数,以及位运算的相关操作。 "_builtin_clz" 头文件函数可以用以下方式调用: int _builtin_clz(unsigned int x); 其中,x是一个无符号整数,函数返回x的二进制表示中,最高位0的个数。 "_builtin_clz" 头文件函数的实现是一种编译器内置的优化技术,它可以利用计算机底层指令集的特性,实现高效的计算。因此,使用"_builtin_clz" 头文件函数可以避免手动编写特定的位运算算法,提高代码的执行效率。 例如,假设有一个无符号整数x的二进制表示为"00110000",则"_builtin_clz" 头文件函数将返回2,表示最高位0的个数为2。 总而言之,"_builtin_clz" 头文件函数是C语言中用于计算无符号整数前导零个数的一个内建函数,它能够高效地进行位运算操作,并返回最高位0的个数。在需要处理二进制表示的问题中,使用"_builtin_clz" 头文件函数可以提高程序的执行效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值