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

โปรแกรมหาผลรวมสูงสุดของจำนวนการคูณใน Python


สมมติว่าเรามีสองรายการที่เรียกว่า nums และ multipliers ตอนนี้ให้พิจารณาการดำเนินการที่เราสามารถลบตัวเลขใดๆ ออกจาก nums และลบตัวเลขใดๆ ออกจากตัวคูณแล้วคูณเข้าด้วยกัน เราต้องทำซ้ำการดำเนินการนี้จนกว่ารายการใดรายการหนึ่งจะว่างเปล่า เราต้องหาผลรวมสูงสุดของตัวเลขที่คูณ

ดังนั้น หากอินพุตเป็น nums =[-4, 4, 3] ตัวคูณ =[-2, 2] ผลลัพธ์จะเป็น 16 เนื่องจากเราสามารถจับคู่ -4 กับ -2 และ 4 กับ 2 ได้ -4 * -2 + 4 * 2.

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

  • เรียงเลขรายการ

  • เรียงลำดับรายการตัวคูณ

  • res :=0

  • ถ้าขนาดของ nums <ขนาดของตัวคูณ แล้ว

    • สลับเลขและตัวคูณ :=ตัวคูณ, ตัวเลข

  • n :=ขนาดของ nums

  • m :=ขนาดของตัวคูณ

  • สำหรับฉันในช่วง 0 ถึง m - 1 ทำ

    • ถ้าตัวคูณ[i] <=0 แล้ว

      • res :=res + nums[i] * ตัวคูณ[i]

    • มิฉะนั้น

      • res :=res + ตัวคูณ[i] * nums[n -(m - i)]

  • ผลตอบแทน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น

def solve(nums, multipliers):
   nums.sort()
   multipliers.sort()
   res = 0
   if len(nums) < len(multipliers):
      nums, multipliers = multipliers, nums

   n, m = len(nums), len(multipliers)
   for i in range(m):
      if multipliers[i] <= 0:
         res += nums[i] * multipliers[i]
      else:
         res += multipliers[i] * nums[n - (m - i)]
   return res

nums = [-4, 4, 3]
multipliers = [-2, 2]
print(solve(nums, multipliers))

อินพุต

[-4, 4, 3], [-2, 2]

ผลลัพธ์

16