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

파이썬에서 주어진 배열 표현식이 최대화되는 값을 찾는 프로그램

<시간/>

num과 values라는 두 개의 배열이 있고 둘 다 정수를 포함하고 num의 값은 엄격하게 증가하고 길이도 동일하다고 가정합니다. 다음과 같은 인덱스 i, j 쌍에 대한 v 값을 찾아야 합니다. v =values[i] + values[j] + nums[j] - nums[i]를 최대화하는 i ≤ j입니다.

따라서 입력이 nums =[1, 2, 7] values ​​=[-4, 6, 5]와 같으면 출력은 16이 되고 i =1과 j =2를 선택하면 6 + 5가 됩니다. + 7 - 2 =16.

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

  • ans1 :=-inf, ans2 :=-inf

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

    • ans1 :=최대 ans1 및 (values[i] - nums[i])

    • ans2 :=최대 ans2 및 (values[i] + nums[i])

  • ans1 + ans2를 반환

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

from math import inf
def solve(nums, values):
   ans1 = -inf
   ans2 = -inf
   for i in range(len(nums)):
      ans1 = max(ans1, (values[i] - nums[i]))
      ans2 = max(ans2, (values[i] + nums[i]))
   return ans1 + ans2

nums = [1, 2, 7]
values = [-4, 6, 5]
print(solve(nums, values))

입력

[1, 2, 7], [-4, 6, 5]

출력

16