Jack Li's Blog

0518. Coin Change II

class Solution {
public:
    int change(int amount, vector<int>& coins) {
        // dp[j] = number of combination to make amount = j
        int dp[amount+1];
        memset(dp, 0, sizeof(dp));

        dp[0] = 1;

        for(int coin : coins) {
            for(int j = coin; j <= amount; j++) {
                dp[j] += dp[j - coin];
            }
        }

        return dp[amount];
    }
};