imashutosh51

Partition Equal Subset Sum

Mar 5th, 2026 (edited)
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.91 KB | None | 0 0
  1. '''
  2. 0/1 Knapsack and same like problem subset sum
  3. here target=sum(arr)//2 and one cache if sum is not even then half of sum can't be done by splitting array so direcly return False.
  4. '''
  5.  
  6. def fun(arr, target, n, dp):
  7.     if target == 0:
  8.         return True
  9.        
  10.     if n < 0:
  11.         return False
  12.  
  13.     if dp[n][target] != -1:
  14.         return dp[n][target]
  15.  
  16.     take, not_take = False, False
  17.    
  18.     if arr[n] <= target:
  19.         take = fun(arr, target - arr[n], n - 1, dp)
  20.        
  21.     not_take = fun(arr, target, n - 1, dp)
  22.    
  23.     dp[n][target] = take or not_take
  24.     return dp[n][target]
  25.  
  26.  
  27. class Solution:
  28.     def canPartition(self, nums: List[int]) -> bool:
  29.         if sum(nums) % 2 != 0:
  30.             return False
  31.            
  32.         target = sum(nums) // 2
  33.         dp = [[-1] * (target + 1) for _ in range(len(nums))]
  34.        
  35.         return fun(nums, target, len(nums) - 1, dp)
  36.        
Advertisement
Add Comment
Please, Sign In to add comment