Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาค่าที่นิพจน์อาร์เรย์ให้ถูกขยายให้ใหญ่สุดในPython


สมมติว่าเรามีอาร์เรย์สองชุดที่เรียกว่า nums และ values ​​ทั้งสองชุดประกอบด้วยจำนวนเต็มและค่าของ nums จะเพิ่มขึ้นอย่างมาก และความยาวของพวกมันก็เท่ากัน เราต้องหาค่าของ v สำหรับคู่ของดัชนี i, j เช่นว่า:i ≤ j ที่เพิ่ม v =ค่า[i] + ค่า[j] + nums[j] - nums[i] ให้สูงสุด

ดังนั้น หากอินพุตเป็น nums =[1, 2, 7] ค่า =[-4, 6, 5] ผลลัพธ์จะเป็น 16 หากเราเลือก i =1 และ j =2 เราจะได้ 6 + 5 + 7 - 2 =16.

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

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

  • สำหรับฉันในช่วง 0 ถึงขนาดของ nums - 1 ทำ

    • 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