餐厅叫号系统

提交数: 211, 通过率: 53.08%, 平均分: 61.71

题目描述:

餐厅叫号系统是现代化餐厅常用的信息管理系统,小明设计了一款模拟餐厅叫号系统的程序。该程序在读取当天就餐信息(数据格式如图所示)后,可以模拟餐厅叫号的顺序,并计算出当天所有客人的等待时间。餐厅共有3种不同类型座位,数量分别是 30、10、 10。客人到达餐厅后,若对应类型的座位有空位,则直接安排客人点餐;若对应类型的座位没有空余,则需要排队等待其他客人离开后才能安排点餐。小明将原始数据读取后将时间格式“HH:MM” 换算成分钟,然后按分钟数升序排列,再依次模拟餐厅叫号的过程,同时计算客人的等待时间,程序运行结果如图所示。

1743510503144903320.png

输入格式:

第一行一个整数n

接下来 n 行,每行三个变量,分别是座位类型,到达时间和进出情况(IN或者OUT)

输出格式:

输出n+1行,前n行输出每个客人点餐时间,第n+1行输出所有客人等待时间

数据范围:

n<=100

样例输入:

8
1 8:30 IN
3 9:00 IN
1 9:00 IN
1 10:00 IN
1 10:00 OUT
3 11:06 OUT
2 14:44 IN
2 16:28 OUT

样例输出:

类别为 1 的客人在 510 分点餐
类别为 3 的客人在 540 分点餐
类别为 1 的客人在 600 分点餐
类别为 2 的客人在 884 分点餐
所有客人等待时间: 60 分钟

提示:

a = []
def read_data(n): #读取数据并排序
    # df = [[1,"8:30","IN"],[3,"9:00","IN"],[1,"9:00","IN"],[1,"10:00","IN"],[1,"10:00","OUT"],[3,"11:06","OUT"],[2,"14:44","IN"],[2,"16:28","OUT"]]
    for i in range(n): #逐行读取数据到列表 row
        row = input().split()
        s = row[1] #将时间数据赋值到 s
        b , c = map(int,s.split(':')) #以“:”分割小时到 b,分钟到 c
        s = b * 60 + c #将 b 小时、 c 分钟换算成 s 分钟
        a.append([int(row[0]) , s , row[2]] ) #a 追加一个元素[row[0],s,row[2]]

    for  i  in  range(n - 1):
        for  j in range(n - 1 , i , -1):
            if  a[j][1] < a[j-1][1]:
                a[j] , a[j-1] = a[j-1] , a[j]
n = int(input())
read_data(n)

b = [0,1,1,1]  #初始 3 种类型的座位数分别是 30,10,10
h = [] 
q = []
for  i  in  range( 4 ) :
    h.append( [-1,-1] ) #h 末尾追加一个元素[-1,-1]
c = 0
total = 0 #填空
for i in range(n):
    m = a[i][0]
    if  a[i][2]=="OUT":
        b[m] += 1
        if  h[m][0] != -1:
            total +=  ________ #后部分填空
            h[m][0] = q[h[m][0]][2]
            b[m] -= 1
            print("类别为",m,"的客人在",a[i][1],"分点餐")
    else:
        if  b[m] > 0:
            b[m] -= 1
            print("类别为",m,"的客人在",a[i][1],"分点餐")
        else:
            q.append([m , a[i][1] , -1])
            if  h[m][0] == -1:
                h[m][0] = ________ #填空
            if  h[m][1] != -1:
                ________ #填空
            h[m][1] = c #填空
            ________ #填空
print("所有客人等待时间:",total,"分钟")
时间限制: 1000ms
空间限制: 256MB

来源: 2023年4月金华十校信息技术第15题