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

Hiệu suất kế hoạch ăn kiêng bằng Python


Giả sử một người ăn kiêng tiêu thụ lượng calo [i], điều này cho biết lượng calo vào ngày thứ i. Nếu chúng ta có một số nguyên k, cho mọi chuỗi k ngày liên tiếp, đó là (calo [i], calo [i + 1], ..., calo [i + k-1] cho tất cả 0 <=i <=n-k ), họ tìm thấy T. T là tổng lượng calo tiêu thụ trong chuỗi k ngày đó (calo [i] + calo [i + 1] + ... + calo [i + k-1]):Nhưng có một số điều kiện;

  • Nếu T
  • Nếu T> giới hạn trên, họ đã thực hiện tốt chế độ ăn kiêng của mình nên được 1 điểm;
  • Nếu không, chúng hoạt động bình thường. Vì vậy, các điểm giống nhau.

Lúc đầu, người ăn kiêng không có điểm nào. Chúng ta phải tìm tổng số điểm mà người ăn kiêng đã đạt được.

Nếu mảng là [6,5,0,0] và k =2 trở xuống:=1 và trên:=5, thì đầu ra sẽ là 0. C [0] + C [1 ]> trên, do đó tăng một điểm, thấp hơn <=C [1] + C [2] <=trên nên không thay đổi, sau đó C [2] + C [3]

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

  • tạm thời:=0
  • cho tôi trong phạm vi từ 0 đến k
    • temp:=temp + C [k]
  • phải:=k - 1 và trái:=0 và điểm:=0
  • while right
  • nếu nhiệt độ trên, sau đó tăng điểm 1
  • temp:=temp - C [left]
  • tăng trái và phải thêm 1
  • if right> =length of C, then out from the loop
  • temp:=temp + C [right]
  • trả lại điểm
  • Ví dụ

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

    class Solution(object):
       def dietPlanPerformance(self, c, k, l, u):
          temp = 0
          for i in range(k):
             temp += c[i]
          right = k-1
          left = 0
          points = 0
          while right < len(c):
             if temp<l:
                points-=1
             elif temp>u:
                points+=1
             temp -=c[left]
             left+=1
             right+=1
             if(right >= len(c)):
                break
             temp+=c[right]
          return points
    ob1 = Solution()
    print(ob1.dietPlanPerformance([6,5,0,0],2,1,5))

    Đầu vào

    [6,5,0,0]
    2
    1
    5

    Đầu ra

    0