Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Hiệu suất kế hoạch ăn uống (Diet Plan Performance) trong Python

Giả sử một người ăn kiêng tiêu thụ calories[i], chỉ lượng calo ngày thứ i. Nếu có số nguyên k, với mỗi chuỗi liên tiếp k ngày (calories[i] đến calories[i+k-1] cho 0 ≤ i ≤ n-k), họ tìm T - tổng calo tiêu thụ trong k ngày đó. Có các điều kiện:

  • Nếu T < lower bound: thực hiện kém, trừ 1 điểm
  • Nếu T > upper bound: thực hiện tốt, cộng 1 điểm
  • Ngược lại: bình thường, điểm không đổi

Ban đầu người ăn kiêng có 0 điểm. Cần tìm tổng điểm đạt được.

Ví dụ: mảng [6,5,0,0], k=2, lower=1, upper=5 cho kết quả 0. C[0]+C[1] > upper (+1), C[1]+C[2] trong khoảng (0), C[2]+C[3] < lower (-1), tổng = 0.

Để giải quyết:

  • temp := 0
  • Với i từ 0 đến k-1: temp += C[i]
  • right := k-1, left := 0, points := 0
  • Khi right < độ dài C:
    • Nếu temp < lower: points -= 1; nếu temp > upper: points += 1
    • temp := temp - C[left]
    • Tăng left và right lên 1
    • Nếu right ≥ độ dài C: thoát vòng lặp
    • temp := temp + C[right]
  • Trả về points

Ví dụ

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

Kết quả

0