题目1通过
This commit is contained in:
parent
dc718d4cf2
commit
30252a773d
51
计算机基础/题目1.py
Normal file
51
计算机基础/题目1.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
class 任务:
|
||||||
|
def __init__(self, 任务名称, 到达时间, 执行时间):
|
||||||
|
self.任务名称 = 任务名称
|
||||||
|
self.到达时间 = 到达时间
|
||||||
|
self.执行时间 = 执行时间
|
||||||
|
self.完成时间 = 0
|
||||||
|
self.周转时间 = 0
|
||||||
|
self.已开始 = False
|
||||||
|
|
||||||
|
|
||||||
|
def 计算周转时间():
|
||||||
|
任务列表 = []
|
||||||
|
for _ in range(4):
|
||||||
|
任务名称, 到达时间, 执行时间 = input().split()
|
||||||
|
任务列表.append(任务(任务名称, int(到达时间), int(执行时间)))
|
||||||
|
|
||||||
|
当前时间 = 0
|
||||||
|
完成数量 = 0
|
||||||
|
结果 = []
|
||||||
|
|
||||||
|
while 完成数量 < 4:
|
||||||
|
可用任务 = [t for t in 任务列表
|
||||||
|
if t.到达时间 <= 当前时间 and not t.已开始]
|
||||||
|
|
||||||
|
if not 可用任务:
|
||||||
|
下一个到达 = min([t.到达时间 for t in 任务列表 if not t.已开始])
|
||||||
|
当前时间 = 下一个到达
|
||||||
|
continue
|
||||||
|
|
||||||
|
最短任务 = min(可用任务,
|
||||||
|
key=lambda x: (x.执行时间, 任务列表.index(x)))
|
||||||
|
|
||||||
|
最短任务.已开始 = True
|
||||||
|
当前时间 += 最短任务.执行时间
|
||||||
|
最短任务.完成时间 = 当前时间
|
||||||
|
最短任务.周转时间 = 最短任务.完成时间 - 最短任务.到达时间
|
||||||
|
|
||||||
|
完成数量 += 1
|
||||||
|
结果.append(最短任务)
|
||||||
|
|
||||||
|
周转时间列表 = []
|
||||||
|
for i in range(4):
|
||||||
|
for t in 结果:
|
||||||
|
if 任务列表[i].任务名称 == t.任务名称:
|
||||||
|
周转时间列表.append(str(t.周转时间))
|
||||||
|
break
|
||||||
|
|
||||||
|
print(" ".join(周转时间列表))
|
||||||
|
|
||||||
|
|
||||||
|
计算周转时间()
|
Loading…
x
Reference in New Issue
Block a user