Subset sum algorithm with repetition of numbers in the set

algorithm, language-agnostic

Solution

If the target is reasonably small, you can use dynamic programming to obtain an O(|S| * t) solution. Here is a sample code in Python:

def combinations(S, t):
    dp = [1] + [0] * t
    for i in S:
        for j in range(0, t - i + 1):
            dp[j + i] += dp[j]
    return dp[t]

Problem

I have a set S containing natural numbers and a target t which is an number. I want to know how can we find the number of possible combinations of these numbers which sums up to target t. A number can be taken any number of times and any number of numbers can be taken for getting the sum equal to the target t. ``` Example target 6 Set s {3,8,1,2} Solution 3+3, 3+2+1, 1+1+1+3, 2+2+2, 2+1+1+2, 2+1+1+1+1, 1+1+1+1+1+1 Total No of solutions possible 7 ``` What can be the efficient algorithm for this?

Original source