Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tìm thời gian tối thiểu để đổi tiền tại quầy thu ngân trong Python


Có n quầy thu ngân, quầy i có k[i] người đứng trước. Khách thứ j ở quầy i có m[i][j] tờ tiền. Thu ngân mất 5 giây quét một tờ, sau khi quét xong khách hàng mất 15 giây để giao dịch. Tìm thời gian sớm nhất có thể đổi tiền.

Ví dụ: n=6, k=[12]*6, ma trận m cho trước -> kết quả 585 (quầy 5 nhanh nhất).

Thuật toán giải quyết

  • Với mỗi quầy i:
    • temp = k[i] * 15 (thời gian giao dịch).
    • Cộng thêm m[i][j] * 5 cho từng khách.
  • Trả về min(temp) qua tất cả quầy.

Ví dụ minh họa

def minTimeToExchange(k, m):
    n = len(k)
    minimum = 99999
    for i in range(n):
        temp = k[i] * 15
        for j in range(k[i]):
            temp += m[i][j] * 5
        if temp < minimum:
            minimum = temp
    return minimum

k = [12, 12, 12, 12, 12, 12]
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

Đầu vào

k=[12]*6, m=[[...],...]

Đầu ra

585