零钱兑换
目录
零钱兑换
https://leetcode-cn.com/problems/coin-change/
以我目前的水平做出来有点吃力,看了思路才做出来
class Solution:
def coinChange(self, coins: List[int], amount: int) -> int:
= [float('inf')] * (amount + 1)
dp 0] = 0
dp[for i in range(amount+1):
for coin in coins: #
if i >= coin:
= min(dp[i],dp[i-coin]+1)
dp[i]
return -1 if (dp[-1] == float("inf")) else dp[-1]
伪代码如下
# 伪码框架
def coinChange(coins: List[int], amount: int):
# 定义:要凑出金额 n,至少要 dp(n) 个硬币
def dp(n):
# 做选择,选择需要硬币最少的那个结果
for coin in coins:
= min(res, 1 + dp(n - coin))
res return res
# 题目要求的最终结果是 dp(amount)
return dp(amount)