Похоже, 13 должно быть 3 в «примере X = 7, Y = 11, Z = 13 и A = [2,8,4,3,2]»
приведенный ниже код может работать для примера и некоторых других случаев, но не уверен, что это может охватить все необходимые сценарии.
def calculateMaxTime(A,X,Y,Z):
dispensers = [X, Y, Z]
#occupied is each dispenser's serving time before car i
occupied =[0,0,0]
K=3
for i in range(len(A)):
startIndex = occupied.index(min(occupied))
#print("startIndex: ",startIndex, " occupied: ", occupied)
count = 0
for j in range(K):
idx = (startIndex+j)%K
if(A[i] <= dispensers[idx]):
if i == len(A)-1:
return occupied[idx];
occupied[idx] += A[i]
dispensers[idx] -= A[i]
break
else:
count += 1
if count == K:
return -1
print("[2,8,4,3,2], 7, 11, 3, waiting time: ", calculateMaxTime([2,8,4,3,2], 7, 11, 3))
print("[2,8,3,3,2], 7, 11, 3, waiting time: ",calculateMaxTime([2,8,3,3,2], 7, 11, 3))
print("[2,8,4,3,2,1,2], 7, 11, 3, waiting time: ", calculateMaxTime([2,8,4,3,2,1,2], 7, 11, 3))
print("[8,2,4,3,2,1,1], 7, 11, 3, waiting time: ", calculateMaxTime([8,2,4,3,2,1,1], 7, 11, 3))
Любые комментарии / исправления приветствуются.