สมมติว่าเรามีลูกค้าอาร์เรย์ โดยที่ลูกค้า[i] =ถือคู่ [arrival_i, time_i] ที่นี่ arrival_i คือเวลาที่ลูกค้ามาถึง และเวลาที่มาถึงจะเรียงลำดับจากน้อยไปมาก และ time_i คือเวลาที่จำเป็นในการเตรียมคำสั่งซื้อของลูกค้า ith ตอนนี้ เมื่อลูกค้ามาถึง เขา/เธอออกคำสั่ง และมีเพียงคำสั่งเดียวที่เริ่มเตรียมการเมื่อพ่อครัวไม่ได้ใช้งาน พ่อครัวไม่ได้เตรียมอาหารให้กับลูกค้ามากกว่าหนึ่งรายในแต่ละครั้ง และเขาเตรียมการเพื่อให้พวกเขาได้รับคำสั่ง เราต้องหาเวลารอโดยเฉลี่ยของลูกค้าทั้งหมด
ดังนั้นหากอินพุตเป็นเหมือนลูกค้า =[[7,2],[8,4],[10,3],[20,1]] ผลลัพธ์จะเป็น 3.5 เพราะ,
-
ลูกค้าคนแรกมาเวลา 7 พ่อครัวรับคำสั่งและเริ่มเตรียมทันทีที่ 7 และเสร็จสิ้นในเวลา 9 ดังนั้นเวลารอสำหรับลูกค้าคนแรกคือ 9 - 7 =2
-
ลูกค้าคนที่สองมาเวลา 8 เชฟรับคำสั่งและเริ่มทำอาหารเวลา 9 และเสร็จสิ้นเวลา 13 ดังนั้นเวลารอของลูกค้าคนที่สองคือ 13 - 8 =5.
-
ลูกค้าคนที่สามมาที่เวลา 10 เชฟรับคำสั่งและเริ่มทำอาหารเวลา 13 และเสร็จสิ้นเวลา 16 ดังนั้นเวลารอสำหรับลูกค้าคนที่สามคือ 16 - 10 =6
-
ลูกค้าคนที่สี่มาที่เวลา 20 เชฟรับคำสั่งและเริ่มทำอาหารทันทีที่ 20 และเสร็จสิ้นในเวลา 21 ดังนั้นเวลารอของลูกค้าคนที่สี่คือ 21 - 20 =1
-
ดังนั้นเวลารอเฉลี่ย =(2 + 5 + 6 + 1) / 4 =3.5.
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- arr :=รายการใหม่
- เวลา :=0
- สำหรับแต่ละคู่ (i, j) ในตัวลูกค้า ทำ
- ถ้าฉัน> เวลา แล้ว
- เวลา :=i + j
- มิฉะนั้น
- เวลา :=เวลา + j
- ถ้าฉัน> เวลา แล้ว
- ใส่ (time-i) ต่อท้าย arr
- คืนสินค้า (เฉลี่ยของทุกรายการเป็น arr)
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(customers): arr = [] time = 0 for i , j in customers: if(i > time): time = i + j else: time += j arr.append(time - i) return sum(arr) / len(arr) customers = [[7,2],[8,4],[10,3],[20,1]] print(solve(customers))
อินพุต
[[7,2],[8,4],[10,3],[20,1]]
ผลลัพธ์
3