• 中国大学MOOC-数据结构与算法实战-周强 例-3 简单模拟单队列排队 (20 分)


    用程序简单模拟一个单队列多窗口的排队模式:
    设某银行有一个固定能容纳N个顾客的等候区,顾客想进银行,若等候区有空则可进,否则被拒绝进入。
    每当银行柜员叫号时,等候区中最先进入的顾客离开等候区前往柜台办理业务,若叫号时等候区无人,则此次叫号作废。

    输入格式:

    第一行输入一个不大于20的正整数N,表示银行等候区能容纳的人数,
    接下来用若干行表示依时间顺序先后发生的“顾客想进银行”或“叫号”事件,格式分别是:

    • 顾客想进银行,用 In <id> 表示,其中<id>是顾客编号,为不大于100000的正整数;
    • 叫号,用Calling表示。

    最后一行是一个#符号,表示输入结束。
    注意:

    1. 题目输入保证每个顾客的编号是独一无二的,即:不会出现想进银行的顾客与已经在等候区的顾客编号相同的情况。
    2. 保证后一个事件一定在前一个事件完成之后才发生,即:不需要考虑事件之间的“同步”问题。

    输出格式:

    对于输入的每个事件,按同样顺序在一行内输出事件的结果,格式分别是:

    • 顾客想进银行,若顾客进入,则输出 <id> joined. Total:<t> 其中<id>是该顾客的编号,<t>是顾客进入后,等候区的人数
    • 顾客想进银行,若因等候区满而被拒绝,则输出 <id> rejected. 其中<id>是该顾客的编号
    • 叫号,若有顾客前往柜台,则输出 <id> called. Total:<t> 其中<id>是该顾客的编号,<t>是顾客去柜台后,等候区的人数
    • 叫号,等候区无人,则输出 No one!

    输入样例:

    3
    In 101
    In 102
    In 103
    In 104
    Calling
    In 105
    Calling
    Calling
    Calling
    Calling
    #
    

    输出样例:

    101 joined. Total:1
    102 joined. Total:2
    103 joined. Total:3
    104 rejected.
    101 called. Total:2
    105 joined. Total:3
    102 called. Total:2
    103 called. Total:1
    105 called. Total:0
    No one!

    代码:
    import queue
    n = eval(input())
    m = 0
    q = queue.Queue()
    while True:
        strings = input().split()
        if strings[0] == "#":
            break
        elif strings[0] == "In":
            if m < n:
                m = m + 1
                q.put(strings[1])
                print("{} joined. Total:{}".format(strings[1], m))
            else:
                print("{} rejected.".format(strings[1]))
        elif strings[0] == "Calling":
            if q.empty():
                print("No one!")
            else:
                m = m - 1
                a = q.get()
                print("{} called. Total:{}".format(a, m))
    

      

  • 相关阅读:
    AAC音频格式分析与解码
    SIGPIPE信号
    可变参数的宏定义
    Makefile条件编译debug版和release版
    Linux下查看内存使用情况
    Trie树 字典树
    C/C++随机数生成 rand() srand()
    关于编译安装Thrift找不到libthriftnb.a的问题
    Linux下使用popen()执行shell命令
    WebSocket协议分析
  • 原文地址:https://www.cnblogs.com/intbjw/p/11795131.html
Copyright © 2020-2023  润新知