备考华为机考的时遇到一个经典流水线调度:
想到个比较容易理解的python版本,但是不确定这样有什么问题:
import sys
s1 = "5 5"
s2 = "8 4 3 2 10 12 1"
nums = int(s1.split(" ")[0])
works = [int(x) for x in s2.split(" ")]
works.sort()
print(works)
if nums >= len(works):
print(max(works))
sys.exit()
socks = works[0:nums]
res = {}
for i in socks:
res[socks.index(i)] = []
time = 0
works_index = len(socks)
# print(works[4])
while True:
time += 1
# print(time)
if time == works[works_index]:
print(f"local_mintime:{time}")
local_mintime = min(socks)
res[socks.index(local_mintime)].append(local_mintime)
socks[socks.index(local_mintime)] = time
works_index += 1
print(socks)
if works_index == len(works):
break
print(res)
fl = []
for i in res:
sum_ = sum(res[i]) + socks[i]
fl.append(sum_)
print(max(fl))