$ O(n^n) $


In [13]:
def get_combinations(amount, denominations):
    combinations = 0
    
    for d in denominations:
        if amount - d > 0:
            combinations += get_combinations(amount - d, denominations)
        elif amount - d == 0:            
            combinations += 1
        
        denominations = denominations[1:]
    
    return combinations

In [14]:
get_combinations(4, [1, 2, 3])


Out[14]:
4

In [17]:
get_combinations(10, [5, 2, 3])


Out[17]:
4

In [ ]: