查詢在 Python 中可以兌換鈔票的最小時間


假設有 n 個收銀員正在兌換錢款,目前,第 i 個收銀員前面有 ki 個人。現在,排隊到第 i 個收銀員的第 j 個人有 m[i,j] 張鈔票。我們必須找到最早可以兌換鈔票的時間。我們必須記住,收銀員掃描一張鈔票需要 5 秒。完成每個顧客所有鈔票的掃描後,他/她需要 15 秒來兌換鈔票。

因此,如果輸入類似於 輸入:n = 6,k = [12, 12, 12, 12, 12, 12]

7897961099678
10710989999656
9889867910667
769669896689
98765108107668
876579796557

則輸出將為 585,因為收銀員需要 5 秒來掃描每個顧客的每張鈔票,所以加上 5*m[I,j]。現在每個收銀員每位顧客需要 15 秒,所以將 15*k[] 加到答案中。計算每個收銀員所需時間後,所需的最短時間將是答案。因此,收銀員 m[5] 所需的最短時間為 585。

為了解決這個問題,我們將遵循以下步驟:

  • n := k 的大小

  • minimum := 99999

  • 對於 i 從 0 到 n,執行

    • temp := k[i] * 15

    • 對於 j 從 0 到 k[i],執行

      • temp := temp + m[i, j] * 5

    • 如果 temp < minimum,則

      • minimum := temp

  • 返回 minimum

示例

讓我們看看下面的實現,以便更好地理解:

 線上演示

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

輸入

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

輸出

585

更新於:2020年8月27日

77 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.