leetcode518零钱兑换II

leetcode 518 Coin Change 2

Posted by BY on September 1, 2020

前言

持续更新了

正文

问题来源

本问题来自leetcode上的518题。

问题描述

给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。

示例 1:

输入: amount = 5, coins = [1, 2, 5]
输出: 4
解释: 有四种方式可以凑成总金额:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1

示例 2:

输入: amount = 3, coins = [2]
输出: 0
解释: 只用面额2的硬币不能凑成总金额3。

示例 3:

输入: amount = 10, coins = [10] 
输出: 1

分析:

func change(amount int, coins []int) int {
    dp := make([]int, amount+1)
    dp[0] = 1
    for _, v := range coins {
        for x := v; x < amount+1; x++ {
            dp[x] += dp[x-v]
        }
    }
    return dp[amount]
}

总结:

勤思考。

结语

不管怎么样好好加油。