• + 1 comment

    Python DP based on the recursion:

    def getWays(n, c):
        dp = [[0 for col in range(len(c)+1)] for row in range(n+1)]
    
        # All empty coins can solve no amount except amount 0.
        for i in range(len(c)+1):
            dp[0][i] = 1
        
        for amount in range(1, n+1):
            for end in range(len(c)):  
                if amount-c[end] >= 0:
                    dp[amount][end+1] = dp[amount-c[end]][end+1] + dp[amount][end]
                else:
                    dp[amount][end+1] = dp[amount][end]
    
        return dp[n][len(c)]