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

Chương trình chia một tập hợp thành các tập hợp tổng bằng nhau trong đó các phần tử trong tập hợp đầu tiên nhỏ hơn tập hợp thứ hai trong Python

Giả sử chúng ta có một danh sách các số gọi là num, chúng ta phải kiểm tra xem chúng ta có thể chia danh sách thành hai nhóm A và B sao cho:Tổng của A và tổng của B bằng nhau hay không. Ở đây mọi số trong A đều nhỏ hơn mọi số trong B.

Vì vậy, nếu đầu vào giống như nums =[3, 4, 5, 12], thì đầu ra sẽ là True, vì chúng ta có thể có A =[3,4,5] và B =[12] và cả hai đều có tổng 12 .

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

  • sắp xếp số lượng danh sách

  • Total:=tổng của tất cả các phần tử trong nums

  • s:=0, i:=0

  • trong khi tôi

    • n:=nums [i]

    • trong khi i

      • s:=s + nums [i]

      • i:=i + 1

    • nếu s giống với tổng - s, thì

      • trả về True

  • trả về Sai

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

Ví dụ

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

Đầu vào

[3, 4, 5, 12]

Đầu ra

True