刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

编程实现:

某服务大厅同时开放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

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```pythonn = int(input())times = list(map(int, input().split()))windows = [0] * 3min_time = float('inf')min_index = 0for i in range(n):for j in range(3):if windows[j] == 0:windows[j] = times[i]breakfor j in range(3):if windows[j] > 0:windows[j] -= 1if windows[j] == 0:min_time = min(min_time, times[i])if j == 0 or (j == 1 and min_time == times[i-1]) or (j == 2 and min_time == times[i-2]):min_index = jbreakelse:continueif min_time == times[i]:print(min_time)exit()print(min_time)```

解析:

【喵呜刷题小喵解析】:
本题是一个模拟题,要求模拟窗口为客户办理业务的过程,并找出办理业务时间最短的窗口。

首先,我们读取输入,第一行是客户数N,第二行是每位客户办理业务的时间。

然后,我们初始化三个窗口的状态为0,表示空闲。

接下来,我们按照客户编号顺序,依次将客户安排到窗口办理业务。如果多个窗口同时为空闲状态,按照窗口编号顺序安排。

在安排客户到窗口办理业务时,我们更新窗口的状态,并判断是否有窗口办理完业务变为空闲状态。如果有,我们更新最短时间min_time和最短时间对应的窗口编号min_index。

最后,如果最短时间min_time等于当前客户的办理时间,说明当前客户办理完业务后,该窗口的办理时间最短,直接输出最短时间并退出程序。否则,继续安排下一个客户到窗口办理业务。

如果所有客户都办理完业务后,输出最短时间min_time即可。

注意,本题需要考虑窗口的优先级,即窗口1优先于窗口2,窗口2优先于窗口3。因此,在更新最短时间min_time和最短时间对应的窗口编号min_index时,需要判断窗口的编号。
创作类型:
原创

本文链接:编程实现: 某服务大厅同时开放3个窗口为客户办理业务,窗口编号分别为1、2、3。 现有N(2≤N≤5

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share