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

โปรแกรมแบ่งชุดออกเป็นชุดผลรวมเท่ากันโดยองค์ประกอบในชุดแรกมีขนาดเล็กกว่าชุดที่สองในPython


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องตรวจสอบว่าเราสามารถแบ่งรายการออกเป็นสองกลุ่ม A และ B ได้หรือไม่ โดยผลรวมของ A และผลรวมของ B จะเท่ากัน ในที่นี้ทุกจำนวนใน A จะน้อยกว่าทุกจำนวนใน B อย่างเคร่งครัด

ดังนั้น หากอินพุตเป็น nums =[3, 4, 5, 12] ผลลัพธ์จะเป็น True เนื่องจากเราสามารถมี A =[3,4,5] และ B =[12] และทั้งคู่มีผลรวม 12 .

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

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

  • ทั้งหมด :=ผลรวมขององค์ประกอบทั้งหมดเป็น nums

  • s :=0, ผม :=0

  • ในขณะที่ฉัน <ขนาดของ nums ทำ

    • n :=nums[i]

    • ในขณะที่ i <ขนาดของ nums และ nums[i] เหมือนกับ n ให้ทำ

      • s :=s + nums[i]

      • ผม :=ผม + 1

    • ถ้า s เท่ากับผลรวม − s แล้ว

      • คืนค่า True

  • คืนค่าเท็จ

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

ตัวอย่าง

class Solution:
   def solve(self, nums):
      nums.sort()
      total = sum(nums)
      s = 0
      i = 0
      while i < len(nums):
         n = nums[i]
         while i < len(nums) and nums[i] == n:
            s += nums[i]
            i += 1
         if s == total - s:
            return True
      return False
ob = Solution()
nums = [3, 4, 5, 12]
print(ob.solve(nums))

อินพุต

[3, 4, 5, 12]

ผลลัพธ์

True