สมมติว่ามีแคชเชียร์แลกเงินจำนวน n คน ในขณะที่แคชเชียร์คนที่ i มีจำนวนคนอยู่ข้างหน้าเขา/เธอจำนวน ki ตอนนี้ คนที่ j ในสายไปยังแคชเชียร์ที่ i มีบันทึกย่อ m[i,j] เราต้องค้นหาว่าเราจะแลกเปลี่ยนบันทึกย่อของเขา/เธอได้เร็วแค่ไหน เราต้องจำไว้ว่าแคชเชียร์ใช้เวลา 5 วินาทีในการสแกนโน้ตตัวเดียว หลังจากสแกนโน้ตทั้งหมดให้กับลูกค้าเสร็จแล้ว เขา/เธอใช้เวลา 15 วินาทีในการแลกเปลี่ยนโน้ต
ดังนั้น หากอินพุตเหมือนกับอินพุต :n =6, k =[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 เนื่องจากแคชเชียร์ต้องใช้เวลา 5 วินาทีในการสแกนโน้ตของลูกค้าแต่ละราย ดังนั้นให้เพิ่ม 5*m[I,j] ตอนนี้แคชเชียร์แต่ละคนใช้เวลา 15 วินาทีสำหรับลูกค้าทุกคน ดังนั้นให้เพิ่ม 15*k[] ในคำตอบ เวลาขั้นต่ำที่ใช้หลังจากคำนวณเวลาที่แคชเชียร์แต่ละคนใช้จะเป็นคำตอบ ดังนั้นแคชเชียร์ m[5] ใช้เวลาขั้นต่ำ 585
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
n :=ขนาดของ k
-
ขั้นต่ำ :=99999
-
สำหรับผมอยู่ในช่วง 0 ถึง n ทำ
-
อุณหภูมิ :=k[i] * 15
-
สำหรับ j ในช่วง 0 ถึง k[i] ทำ
-
temp :=temp + m[i, j] * 5
-
-
ถ้า temp <ต่ำสุด แล้ว
-
ขั้นต่ำ :=อุณหภูมิ
-
-
-
ผลตอบแทนขั้นต่ำ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def minTimeToExchange(k, m):n =len(k) maximum =99999 for i in range(n):temp =k[i] * 15 for j in range(k[i]):temp +=m[i][j] * 5 ถ้า temp <ต่ำสุด:ต่ำสุด =ชั่วคราว คืนค่าขั้นต่ำ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]]พิมพ์(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