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

Chương trình tìm số sinh ba tốt bằng Python

Giả sử chúng ta có một số mảng và ba số nguyên khác nhau a, b và c. Chúng ta phải tìm ra số lượng cặp sinh ba tốt. Một bộ ba (nums [i], nums [j], nums [k]) được cho là một bộ ba tốt nếu các điều kiện sau là đúng -

  • 0 <=i

  • | nums [i] - nums [j] | <=a

  • | nums [j] - nums [k] | <=b

  • | nums [i] - nums [k] | <=c

Chúng ta phải đếm số lượng sinh ba tốt.

Vì vậy, nếu đầu vào giống như nums =[5,2,3,3,12,9], a =7, b =2, c =3, thì đầu ra sẽ là 4 vì bộ ba tốt là [(5, 2,3), (5,2,3), (5,3,3), (2,3,3)]

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

  • res:=0

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

    • đối với j trong phạm vi i + 1 đến kích thước của nums - 1, thực hiện

      • đối với k trong phạm vi j + 1 đến kích thước của nums - 1, thực hiện

        • nếu | nums [i] - nums [j] | <=a và | nums [j] - nums [k] | <=b và | nums [i] - nums [k] | <=c, sau đó

          • res:=res + 1

  • trả lại res

Ví dụ (Python)

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

def solve(nums, a, b, c):
   res = 0
   for i in range(len(nums)):
      for j in range(i+1, len(nums)):
         for k in range(j+1, len(nums)):
            if abs(nums[i] - nums[j]) <= a and abs(nums[j] - nums[k]) <= b and abs(nums[i] - nums[k]) <= c:
               res += 1
   return res

nums= [5,2,3,3,12,9]
a = 7
b = 2
c = 3
print(solve(nums, a, b, c))

Đầu vào

[5,2,3,3,12,9], 7, 2 3

Đầu ra

4