Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

หาเวลาน้อยที่สุดที่สามารถแลกเปลี่ยนธนบัตรได้จากหลาย Cashier ใน Python

Minimum Time to Exchange Notes at Cashiers

มี Cashier n คน คนที่ i มีคิว k[i] คน คนที่ j ในคิว i มีธนบัตร m[i][j] ใบ การสแกน 1 ใบใช้ 5 วินาที หลังสแกนครบคนหนึ่ง ใช้ 15 วินาทีในการแลกเงิน หาเวลาน้อยที่สุดที่จะได้แลกเงิน (เลือกคิวที่เร็วที่สุด)

การคำนวณ

เวลาของ Cashier i = 15 * k[i] + 5 * Σ m[i][j] เลือกค่าต่ำสุด

โค้ดตัวอย่าง Python


def minTimeToExchange(k, m):
    best = float('inf')
    for i in range(len(k)):
        time = k[i] * 15
        for notes in m[i]:
            time += notes * 5
        best = min(best, time)
    return best

k = [12]*6
m = [
    [7,8,9,7,9,6,10,9,9,6,7,8],
    [10,7,10,9,8,9,9,9,9,6,5,6],
    [9,8,8,9,8,6,7,9,10,6,6,7],
    [7,6,9,6,6,9,8,9,6,6,8,9],
    [9,8,7,6,5,10,8,10,7,6,6,8],
    [8,7,6,5,7,9,7,9,6,5,5,7]
]
print(minTimeToExchange(k, m))  # 585