leecode.面試題.08.11.硬幣

free1993發表於2020-12-19

題目

硬幣。給定數量不限的硬幣,幣值為25分、10分、5分和1分,編寫程式碼計算n分有幾種表示法。(結果可能會很大,你需要將結果模上1000000007)

示例1:

輸入: n = 5
輸出:2
解釋: 有兩種方式可以湊成總金額:
5=5
5=1+1+1+1+1

示例2:

輸入: n = 10
輸出:4
解釋: 有四種方式可以湊成總金額:
10=10
10=5+5
10=5+1+1+1+1+1
10=1+1+1+1+1+1+1+1+1+1

程式碼

class Solution {
public:
    const int mod = 1000000007;
    int waysToChange(int n) {
        vector<int> dp(n + 1, 0);
        dp[0] = 1;
        int coins[4] = {1,5,10,25};
        for(int i = 0;i < 4;i++){
            int c = coins[i];
            for(int j = c; j <= n;j++)  dp[j] = (dp[j] + dp[j - c]) % mod;
        }
        return dp[n];
    }
};

相關文章