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

Python에서 최대 nCr 값을 가진 주어진 배열에서 쌍 찾기

<시간/>

n개의 정수를 가진 배열 arr이 있다고 가정하고 배열에서 arr[i]Carr[j]가 최대한 크도록 arr[i]와 arr[j]를 찾아야 합니다. 한 쌍 이상이면 그 중 하나를 반환하십시오.

따라서 입력이 [4, 1, 2]와 같으면 출력은 4C1 =4, 4C2 =6 및 2C1 =2이므로 4 2가 되므로 (4,2)는 우리가 원하는 대로만 쌍입니다.

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

  • 목록 정렬
  • N :=v[n - 1]
  • N mod 2가 1과 같으면
    • 첫 번째 :=N / 2(정수 나누기)
    • 두 번째 :=첫 번째 + 1
    • 왼쪽 :=-1, 오른쪽 :=-1
    • 온도 :=-1
    • 0에서 n 사이의 i에 대해
      • v[i]> 먼저, 그러면
        • temp :=나
        • 중단
      • 그렇지 않으면
        • 차이 :=첫 번째 - v[i]
        • 차이가
        • res1 :=차이
        • 왼쪽 :=v[i]
  • 맞음 :=v[temp]
  • 차이1 :=첫 번째 - 왼쪽
  • 차이2 :=오른쪽 - 두 번째
  • 차이1 <차이2이면
    • 인쇄(N, 왼쪽)
  • 그렇지 않으면
    • 인쇄(N, 오른쪽)
  • 그렇지 않으면
    • 최대 :=N / 2(정수 나누기)
    • res :=3*(10^18)
    • R :=-1
    • 0 ~ n - 1 범위의 i에 대해
      • 차이:=|v[i] - 최대|
      • 차이
      • res :=차이
      • R :=v[i]
  • 인쇄(N, R)
  • 예시

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

    def findMatrixPair(v, n):
       v.sort()
       N = v[n - 1]
       if N % 2 == 1:
          first = N // 2
          second = first + 1
          res1, res2 = 3 * (10 ** 18), 3 * (10 ** 18)
          left, right = -1, -1
          temp = -1
          for i in range(0, n):
             if v[i] > first:
                temp = i
                break
             else:
                difference = first - v[i]
                if difference < res1:
                   res1 = difference
                   left = v[i]
          right = v[temp]
          difference1 = first - left
          difference2 = right - second
          if difference1 < difference2:
             print(N, left)
          else:
             print(N, right)
       else:
          max = N // 2
          res = 3 * (10 ** 18)
          R = -1
          for i in range(0, n - 1):
             difference = abs(v[i] - max)
             if difference < res:
             res = difference
             R = v[i]
          print(N, R)
    v = [4,1,2]
    n = len(v)
    findMatrixPair(v, n)

    입력

    [4,1,2], 3

    출력:

    4 2