Computer >> Máy Tính >  >> Lập trình >> Python

Thay đổi nước chanh trong Python

Giả sử có một quầy bán nước chanh, mỗi ly nước chanh có giá 5 đô la. Giờ đây, khách hàng đang xếp hàng để mua từ cửa hàng và đặt hàng từng cái một.

Mỗi khách hàng chỉ có thể mua một ly nước chanh và thanh toán bằng hóa đơn $ 5, $ 10 hoặc $ 20. Chúng tôi phải cung cấp thay đổi chính xác cho từng khách hàng, để giao dịch ròng là khách hàng trả $ 5. Và lúc đầu, chúng tôi không có tiền lẻ.

Chúng tôi phải kiểm tra xem chúng tôi có thể cung cấp cho mọi khách hàng sự thay đổi chính xác hay không.

Vì vậy, nếu đầu vào là [5,5,5,10,20], thì đầu ra sẽ là Đúng, vì từ 3 khách hàng đầu tiên, chúng ta có thể nhận được ba tờ tiền 5 đô la theo thứ tự. Từ tờ thứ tư, chúng tôi thu một tờ 10 đô la và trả lại 5 đô la. Sau đó từ khách hàng thứ năm, chúng tôi đưa ra một tờ 10 đô la và một tờ 5 đô la. Vì tất cả khách hàng đều nhận được sự thay đổi chính xác, chúng tôi đưa ra kết quả đúng.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • n5:=0, n10:=0, n20:=0
  • đối với mỗi tôi trong hóa đơn, hãy thực hiện
    • nếu tôi giống với 5, thì
      • n5:=n5 + 1
    • ngược lại, khi tôi bằng 10, thì
      • n10:=n10 + 1
    • nếu không thì n20:=n20 + 1
    • nếu kích thước của hóa đơn> 0 và n5 giống 0, thì
      • trả về Sai
    • nếu tôi giống với 20 và n10> 0 và n5> 0, thì
      • n10:=n10 - 1
      • n5:=n5 - 1
    • Ngược lại, khi tôi giống 20 và n10 giống 0 và n5 <3, thì
      • trả về Sai
    • ngược lại khi tôi giống 20 và n10 giống 0 và n5> =3, thì
      • n5:=n5 -3
    • nếu tôi giống với 10 và n5> 0, thì
      • n5:=n5 - 1
    • ngược lại, khi tôi giống 10 và n5 giống 0, thì
      • trả về Sai
  • trả về True

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

class Solution:
   def lemonadeChange(self, bills):
      n5 = 0
      n10 = 0
      n20 = 0
      for i in bills:
         if i == 5:
            n5 += 1
         elif i == 10:
            n10 += 1
         else:
            n20 += 1
         if len(bills) > 0 and n5 == 0:
            return(False)
         if i == 20 and n10 > 0 and n5 > 0:
            n10 -= 1
            n5 -= 1
         elif i == 20 and n10 == 0 and n5 < 3:
            return(False)
         elif i == 20 and n10 == 0 and n5 >= 3:
            n5 = n5 -3
         if i == 10 and n5 > 0:
            n5 -= 1
         elif i == 10 and n5 == 0:
            return (False)
      return(True)
ob = Solution()
print(ob.lemonadeChange([5,5,5,10,20]))

Đầu vào

[5,5,5,10,20]

Đầu ra

True