如何用python求解加油站最大等待时间?

2024-09-30 00:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个我已经研究了几天的问题。在

在加油站(a[])排队等候的N辆车,根据所需的油量,有3台加油机(X,Y,Z),加油量有限。加满1公升需要1秒钟。汽车瞬间移动。在

假设一辆汽车的燃料需求量是D,汽车应该去一个至少提供D升或等待的加油机。如果所有的自动售货机都没人,汽车按字母顺序到第一个。 当任何一辆车不能再加油时返回-1。在

例如X=7,Y=11,Z=13和A=[2,8,4,3,2]

在0时,car0开车到X,car1开到Y Z中没有足够的燃料供car2使用,所以它等待 在时间2,car0完成加油,2号车开到加油机X 时间2时,3号车厢驶向Z号分配器 所有分配器都被占用,所以car4等待 当car2和car3离开时,X和Y中没有足够的气体供给car4,所以car4要等到car1加油完毕。 时间8时,4号车开到分配器Y

最大等待=8

灵感:工作到第二次,但我记不清哪辆车在哪个加油机加油。在

def solution(A,X,Y,Z):

    station = {
    'X':True,
    'Y':True,
    'Z':True
     }


    t=0
    for y in range(100):
        t+=1


        for i in range(len(A)):


            if A[i]<=X and station['X']:
                A[i]-=1
                station['X']=False
                X-=1


            elif A[i]<=Y and station['Y']:
                A[i]-=1
                Y-=1
                station['Y']=False


            elif A[i]<=Z and station['Z']:
                A[i]-=1
                Z-=1
                station['Z']=False

            else:

                break

Tags: andfalsetruefor时间汽车station燃料
1条回答
网友
1楼 · 发布于 2024-09-30 00:37:10

在“示例X=7,Y=11,Z=13 and A=[2,8,4,3,2]”中,13应该是3 下面的代码可以用于示例和其他一些情况,不确定这是否可以涵盖所有需要的场景。在

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))

如有任何意见/更正,我们将不胜感激。在

相关问题 更多 >

    热门问题