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

ตรวจสอบว่าสามารถให้บริการคิวลูกค้าด้วยบันทึกย่อต่าง ๆ ใน Python . ได้หรือไม่


สมมติว่าเรามีอาร์เรย์ที่เรียกว่าบันทึกย่อแสดงถึงธนบัตรรูปีที่แตกต่างกันที่ลูกค้าถืออยู่ในคิว พวกเขากำลังรอซื้อตั๋วมูลค่า 50 รูปี โดยหมายเหตุที่เป็นไปได้คือ [50, 100 และ 200] เราต้องตรวจสอบว่าเราสามารถขายตั๋วให้ประชาชนเป็นลำดับหรือไม่ อันดับแรก เรามี 0 รูปีในมือ

ดังนั้น หากอินพุตเหมือนกับบันทึกย่อ =[50, 50, 100, 100] ผลลัพธ์จะเป็น True สำหรับสองรายการแรก เราไม่จำเป็นต้องส่งคืนสิ่งใดๆ แต่ตอนนี้ เรามีบันทึกย่อ Rs 50 สองรายการ ดังนั้นสำหรับสองใบสุดท้าย เราสามารถส่งคืนธนบัตร 50 รูปีและขายตั๋วทั้งหมดตามลำดับ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ความถี่ :=แผนที่ว่าง
  • ผม :=0
  • ในขณะที่ฉัน <ขนาดของโน้ต ทำ
    • ถ้า note[i] เท่ากับ 50 แล้ว
      • ความถี่[50] :=ความถี่[50] + 1
    • มิฉะนั้น เมื่อโน้ต[i] เท่ากับ 100 แล้ว
      • ความถี่[100] :=ความถี่[100] + 1
      • ถ้า freq[50] เป็น 0 แล้ว
        • ออกมาจากลูป
      • ความถี่[50] :=ความถี่[50] - 1
    • มิฉะนั้น
      • ถ้า freq[100]> 0 และ freq[50]> 0 แล้ว
        • ความถี่[100] :=ความถี่[100] - 1
        • ความถี่[50] :=ความถี่[50] - 1
      • มิฉะนั้น เมื่อ freq[50]>=3 แล้ว
        • ความถี่[50] :=ความถี่[50] - 3
      • มิฉะนั้น
        • ออกมาจากลูป
    • ผม :=ผม + 1
  • ถ้าฉันมีขนาดเท่ากับโน้ตแล้ว
    • คืนค่า True
  • คืนค่าเท็จ

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

from collections import defaultdict
def solve(notes):
   freq = defaultdict(int)
   i = 0
   while i < len(notes):
      if notes[i] == 50:
         freq[50] += 1
      elif notes[i] == 100:
         freq[100] += 1
         if freq[50] == 0:
            break
         freq[50] -= 1
      else:
         if freq[100] > 0 and freq[50] > 0:
            freq[100] -= 1
            freq[50] -= 1
         elif freq[50] >= 3:
            freq[50] -= 3
         else:
            break
      i += 1
   if i == len(notes):
      return True
   return False
notes = [50, 50, 100, 100]
print(solve(notes))

อินพุต

[50, 50, 100, 100]

ผลลัพธ์

True