Given an array and a sum, find the count of unique subsets with each subset’s sum equal to the given sum value.
Examples:
Input : 4 12 5 9 12 9 Output : 2 (subsets will be [4, 5] and [9]) Input : 1 2 3 4 5 10 Output : 3
We will use dynamic programming to solve this problem and this solution has time complexity of O(n2). Below is dp[][] used in the code –
_ | 4 12 5 9 12 0 |[1, 1, 1, 1, 1] 1 |[0, 0, 0, 0, 0] 2 |[0, 0, 0, 0, 0] 3 |[0, 0, 0, 0, 0] 4 |[1, 1, 1, 1, 1] 5 |[0, 0, 1, 1, 1] 6 |[0, 0, 0, 0, 0] 7 |[0, 0, 0, 0, 0] 8 |[0, 0, 0, 0, 0] 9 |[0, 0, 1, 2, 2]
Below is the Python Code :
# Python code to find the number of unique subsets # with given sum in the given array   def help(a,s):               dp = [[0 for i in range(len(a))] for j in range(0,s+1)]         for i in range(len(a)):             dp[0][i] = 1        for i in range(1,s+1):             if i == a[0]:                 dp[i][0] = 1        for i in range(1, s+1):             for j in range(1, len(a)):                 if a[j]<=i:                         dp[i][j] = dp[i][j-1] + dp[i-a[j]][j-1]                 else:                         dp[i][j] = dp[i][j-1]         return dp[s][len(a)-1]    # driver code a = [4, 12, 5, 9, 12] s = 9  print(help(a,s)) |
Output :
2
