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

Chương trình tìm giá trị mà biểu thức mảng đã cho được tối đa hóa bằng Python

Giả sử chúng ta có hai mảng được gọi là nums và value, cả hai đều chứa các số nguyên và giá trị của nums đang tăng dần và độ dài của chúng cũng bằng nhau. Chúng ta phải tìm giá trị của v cho một cặp chỉ số i, j, sao cho:i ≤ j tối đa hóa v =giá trị [i] + giá trị [j] + nums [j] - nums [i].

Vì vậy, nếu đầu vào giống như nums =[1, 2, 7] giá trị =[-4, 6, 5], thì đầu ra sẽ là 16, nếu chúng ta chọn i =1 và j =2, chúng ta nhận được 6 + 5 + 7 - 2 =16.

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

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

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

    • ans1:=tối đa ans1 và (giá trị [i] - nums [i])

    • ans2:=tối đa ans2 và (giá trị [i] + nums [i])

  • trả về ans1 + ans2

Ví dụ

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

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

Đầu vào

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

Đầu ra

16