Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 좋은 삼중항의 수를 찾는 프로그램

<시간/>

배열 num과 세 개의 다른 정수 a, b, c가 있다고 가정합니다. 우리는 좋은 세쌍둥이의 수를 찾아야 합니다. 삼중항(nums[i], nums[j], nums[k])은 다음 조건이 참인 경우 좋은 삼중항이라고 합니다. -

  • 0 <=i

  • |숫자[i] - 숫자[j]| <=

  • |숫자[j] - 숫자[k]| <=ㄴ

  • |숫자[i] - 숫자[k]| <=c

좋은 세쌍둥이의 수를 세어야 합니다.

따라서 입력이 nums=[5,2,3,3,12,9], a =7, b =2, c =3과 같으면 좋은 삼중항이 [(5, 2,3), (5,2,3), (5,3,3), (2,3,3)]

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 해상도 :=0

  • 범위 0에서 숫자 - 1까지의 i에 대해 수행

    • i+1 범위에서 nums - 1 크기의 j에 대해 수행

      • 범위 j+1에서 nums - 1까지의 k에 대해 수행

        • 경우 |숫자[i] - 숫자[j]| <=a 및 |nums[j] - nums[k]| <=b 및 |nums[i] - nums[k]| <=c, 다음

          • 해상도 :=해상도 + 1

  • 반환 해상도

예제(파이썬)

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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))

입력

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

출력

4