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

โปรแกรมลดรายการตามการดำเนินการที่กำหนดและค้นหาจำนวนที่เหลืออยู่น้อยที่สุดใน Python


สมมติว่าเรามีรายการจำนวนบวกที่เรียกว่า nums ตอนนี้ให้พิจารณาการดำเนินการที่เราลบสองค่า a และ b โดยที่ a ≤ b และถ้า a

ดังนั้น ถ้าอินพุตเป็น nums =[2, 4, 5] ผลลัพธ์จะเป็น 1 เพราะเราสามารถเลือก 4 และ 5 แล้วใส่กลับ 1 เพื่อให้ได้ [2, 1] ตอนนี้เลือก 2 และ 1 เพื่อรับ [1].

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

  • s :=ผลรวมขององค์ประกอบทั้งหมดที่มีอยู่ใน nums
  • กำหนดฟังก์ชัน f() นี่จะใช้เวลา i, s
  • ถ้า i>=ขนาดของ nums แล้ว
    • คืนสินค้า
  • n :=nums[i]
  • ถ้า s - 2 * n <0 แล้ว
    • ผลตอบแทน f(i + 1, s)
  • ผลตอบแทนขั้นต่ำของ f(i + 1, s - 2 * n) และ f(i + 1, s)
  • จากวิธีหลักส่งคืน f(0, s)

ตัวอย่าง

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

def solve(nums):
   s = sum(nums)

   def f(i, s):
      if i >= len(nums):
         return s
      n = nums[i]
      if s - 2 * n < 0:
         return f(i + 1, s)
      return min(f(i + 1, s - 2 * n), f(i + 1, s))

   return f(0, s)

nums = [2, 4, 5]
print(solve(nums))

อินพุต

[2, 4, 5]

ผลลัพธ์

1