码迷,mamicode.com
首页 > 其他好文 > 详细

面试题 08.11. 硬币

时间:2021-04-23 12:06:20      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:title   rgb   leetcode   试题   硬币   bsp   +=   i++   遍历   

1.状态定义

dp[i]表示组成面额 i,有多少种方案。

2.状态转移方程

int[] coins = new int[]{1,5,10,25};

for(int coin: coins) {

     dp[k] += dp[k - coin];

}

比如dp[36] = dp[36-1] + dp[36 - 5] + dp[36-10] + dp[36-25]

3.边界处理

dp[0] = 1.

 

先遍历硬币,避免coin(6) = 1 + 5 和coin(6) = 5 + 1 情况。

面试题 08.11. 硬币

class Solution {
    public int waysToChange(int n) {
        int[] dp = new int[n + 1];
        int[] coins = new int[]{1,5,10,25};
        dp[0] = 1;
        for(int coin : coins)
            for(int i = coin; i <= n; i++)
                dp[i] = (dp[i] + dp[i - coin]) % 1000000007;
        return dp[n];
    }
}

 

面试题 08.11. 硬币

标签:title   rgb   leetcode   试题   硬币   bsp   +=   i++   遍历   

原文地址:https://www.cnblogs.com/deerlet/p/14691201.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!