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];
    };
    

      

  • 相关阅读:
    将图片插入到excel中
    C#如何实现下载文件保存到本地上面去
    jQuery实现按enter键登录
    线程(转载)
    SQL Server:触发器详解
    C# 创建Windows服务
    小记
    mysql的部署和使用
    Maven的理解和使用
    tomcat的部署与实践
  • 原文地址:https://www.cnblogs.com/liu-xin1995/p/12758083.html
Copyright © 2011-2022 走看看