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

หาเวลาขั้นต่ำที่สามารถแลกเปลี่ยนบันทึกย่อใน Python


สมมติว่ามีแคชเชียร์แลกเงินจำนวน 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