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

      

  • 相关阅读:
    域账户-配置文件
    创建任务计划
    查看系统和PowerShell版本
    查找数组中元素的索引位置
    更改计算机名称,修改密码
    生成GUID
    微服务架构 vs. SOA架构
    springMvc架构简介
    Spring Boot和Spring cloud
    Spring链接汇总
  • 原文地址:https://www.cnblogs.com/liu-xin1995/p/12758083.html
Copyright © 2011-2022 走看看