zoukankan      html  css  js  c++  java
  • 刷题83——硬币

    122.硬币

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/coin-lcci

    题目描述

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

    关键技术

    动态规划

    题目分析

    1. 新建数组dp,dp[j]表示组成j元需要最少的硬币数;
    2. 状态转移方程:dp[j] = dp[j] + dp[j-coin[i]];
    3. 注意:对1000000007取模。
    /**
     * @param {number} n
     * @return {number}
     */
    var waysToChange = function(n) {
        let coin = [1, 5, 10, 25];
        let dp = new Array(n+1).fill(1);
        for(let i=1; i<4; i++){
            for(let j=1; j<=n; j++){
               if(j - coin[i] >= 0){
                    dp[j] = (dp[j] + dp[j-coin[i]]) % 1000000007;
               }
            }
        }
        return dp[n];
    };
    

      

  • 相关阅读:
    2011年10月小记
    修改模拟器hosts文件
    2011年9月小记
    解决IIS7.5站点不能登录SQLEXPRESS
    EF 4.3 CodeBased Migrations
    2012年5月 小记
    Android对SD卡进行读写
    Tomcat for Eclipse
    ARR2.5 配置反向代理
    作业2浅谈数组求和java实验
  • 原文地址:https://www.cnblogs.com/liu-xin1995/p/12758083.html
Copyright © 2011-2022 走看看