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

Tìm xem có thể sắp xếp ngăn nắp các cốc và kệ bằng Python hay không

Giả sử chúng ta có ba loại cốc khác nhau trong dãy p và đĩa trong dãy q và m số kệ, chúng ta phải kiểm tra xem có thể sắp xếp ngăn nắp các cốc và kệ hay không.

Chúng ta có thể nói rằng việc sắp xếp cốc và đĩa sẽ gọn gàng nếu tuân theo các điều kiện sau - 1. Không có kệ nào có thể chứa cả cốc và đĩa. 2. Một bản thân có thể chứa nhiều nhất 5 cái cốc. 3. Một bản thân có thể chứa nhiều nhất 10 đĩa.

Vì vậy, nếu đầu vào là p =[4, 3, 7] q =[5, 9, 10] m =11, thì đầu ra sẽ là True vì tổng số cốc =14, 3 giá được yêu cầu, tổng số đĩa =24, 3 giá là bắt buộc. Vì vậy, tổng số kệ cần thiết =3 + 3 =6, nhỏ hơn số giá cho trước m.

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

  • sum_p:=0, sum_q:=0

  • đối với tôi trong phạm vi từ 0 đến kích thước của p, thực hiện

    • sum_p:=sum_p + p [i]

  • đối với tôi trong phạm vi từ 0 đến kích thước của q, thực hiện

    • sum_q:=sum_q + q [i]

  • m_p:=(sum_p + 4) / 5

  • m_q:=(sum_q + 9) / 10

  • nếu m_p + m_q <=m thì

    • trả về True

  • nếu không,

    • trả về Sai

Ví dụ

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

def is_valid(p, q, m):
   sum_p = 0
   sum_q = 0
   for i in range(0, len(p)):
      sum_p += p[i]
   for i in range(0,len(q)):
      sum_q += q[i]
   m_p = (sum_p + 5 - 1) / 5
   m_q = (sum_q + 10 - 1) / 10
   if(m_p + m_q <= m):
      return True
   else:
      return False
p = [4, 3, 7]
q = [5, 9, 10]
m = 11

print(is_valid(p ,q ,m))

Đầu vào

[4, 3, 7], [5, 9, 10], 11

Đầu ra

True