硬币问题

这篇博客讨论了如何使用编程解决一个计数问题,即给定一定金额,计算用25分、10分、5分和1分硬币的不同组合表示方法。通过中等难度的代码实现,展示了如何利用动态规划求解,并提示结果可能很大,需取模1000000007。
摘要由CSDN通过智能技术生成

面试题 08.11. 硬币

Difficulty: 中等

硬币。给定数量不限的硬币,币值为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

说明:

注意:

你可以假设:

  • 0 <= n (总金额) <= 1000000
Solution

Language: 全部题目


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

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值