problem given a value value if we want to make change for value cents and we have infinite supply of each of coins s1 s2 sm valued coins how many ways can we make the change the order of coins doesn t matter for example for value 4 and coins 1 2 3 there are four solutions 1 1 1 1 1 1 2 2 2 1 3 so output should be 4 for value 10 and coins 2 5 3 6 there are five solutions 2 2 2 2 2 2 2 3 3 2 2 6 2 3 5 and 5 5 so the output should be 5 time complexity on m where n is the value and m is the number of coins space complexity on find number of combination of coins that adds upp to value keyword arguments coins int value int initialize dp array and set base case as 1 fill dp in a bottom up manner find number of combination of coins that adds upp to value keyword arguments coins int value int initialize dp array and set base case as 1 fill dp in a bottom up manner
def count(coins, value):
    
    
    dp_array = [1] + [0] * value

    
    for coin in coins:
        for i in range(coin, value+1):
            dp_array[i] += dp_array[i-coin]

    return dp_array[value]