来源:十四届蓝桥杯STEMA考试Python真题试卷第一套编程第四题
这个程序虽然代码量不大,但综合运用了多种基础算法和数据结构:贪心策略选择窗口、模拟现实过程、线性查找最小值、效率高(时间复杂度为 O ( N ) O(N) O(N))。
题目描述:
编程实现:某服务大厅同时开放 3 个窗口为客户办理业务,窗口编号分别为 1、2、3。
现有 N(2≤N≤50)位客户需要办理业务,客户编号为 1~N,作为办理业务的先后顺序。
起初三个窗口为空闲状态,空闲的窗口会按照客户编号顺序呼叫下一位客户。如果多个窗口同时为空闲状态,按照窗口编号顺序呼叫(1 优先于 2,2 优先于 3)。
现给出每位客户办理业务的时间(单位:分钟),请计算出 N 位客户全部办理完业务后,哪一个窗口合计办理业务的时间最短,并输出最短时间。
例如:N=7,7 位客户编号分别为 1、2、3、4、5、6、7,客户办理业务时间分别为 3、5、2、4、7、1、6,(如下图):
初始客户编号为 1、2、3 的客户分别在 1、2、3 窗口同时办理业务;
窗口 3 用时 2 分钟办理完 3 号客户的业务,变为空闲状态,并按顺序呼叫 4 号客户,用时 4 分钟;
窗口 1 用时 3 分钟办理完 1 号客户的业务,变为空闲状态,并按顺序呼叫 5 号客户,用时 7 分钟;
窗口 2 用时 5 分钟办理完 2 号客户的业务,变为空闲状态,并按顺序呼叫 6 号客户,用时 1 分钟;
6 分钟后,窗口 2 和 3 同时变为空闲状态,窗口 2 呼叫 7 号客户,用时 6 分钟。
全部客户办理完业务后,三个窗口总用时分别为 10 分钟、12 分钟、6 分钟,用时最短的是窗口 3,最短时间为 6 分钟。
输入描述:
第一行输入一个正整数 N(2≤N≤50),表示办理业务的客户数第二行输入 N 个正整数(1≤正整数≤50),依次表示每位客户办理业务的时间,正整数之间以一个空格隔开
输出描述:
输出一个整数,表示客户全部办理完业务,用时最短的窗口所用时间,若有多个窗口总用时最短且相同,输出一个即可
样例输入:
7
3 5 2 4 7 1 6
样例输出:
6
参考答案:
这是一个服务窗口排队问题。我们需要模拟整个服务过程,并追踪每个窗口的总服务时间。
# 读取客户数量
N = int(input())
# 读取每位客户的办理时间并转换为列表
times = lis
标签:练习题,窗口,题解,用时,业务,分钟,蓝桥,客户,办理
From: https://blog.csdn.net/hk_624/article/details/143262800