算法 第45天 动态规划7

322 零钱对兑换

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

你可以认为每种硬币的数量是无限的。

python 复制代码
# 先物品后背包
def coinChange(coins:'list[int]',amount:int)->int:
	dp=[float{'inf'}]*(amount+1)
	dp[0]=0
	for coin in coins:
		for i in range(coin,amount+1):
			if dp[i-coin]!=float('inf):
				dp[i]=min(dp[i-coin]+1,dp[i])
	if dp[amount]==float('inf'):
		return -1
	return dp[amount]
	
# 先背包后物品
def coinChange(coins,amount):
	dp=[float{'inf'}]*(amount+1)
	dp[0]=0
	for i in range(1,amount+1):
		for j in range(len(coins)):
			if i-coins[j]>=0 and dp[i-coins[j]]!=float('inf')
				dp[i]=min(dp[i-coins[j]]+1,dp[i])
	if dp[amount]==float('inf'):
		return -1
	return dp[amount]
	
	

279

相关推荐
代码小将2 小时前
Leetcode209做题笔记
java·笔记·算法
Musennn3 小时前
leetcode 15.三数之和 思路分析
算法·leetcode·职场和发展
CM莫问5 小时前
<论文>(微软)避免推荐域外物品:基于LLM的受限生成式推荐
人工智能·算法·大模型·推荐算法·受限生成
康谋自动驾驶6 小时前
康谋分享 | 自动驾驶仿真进入“标准时代”:aiSim全面对接ASAM OpenX
人工智能·科技·算法·机器学习·自动驾驶·汽车
C++ 老炮儿的技术栈7 小时前
什么是函数重载?为什么 C 不支持函数重载,而 C++能支持函数重载?
c语言·开发语言·c++·qt·算法
yychen_java8 小时前
R-tree详解
java·算法·r-tree
MarkHard1238 小时前
Leetcode (力扣)做题记录 hot100(62,64,287,108)
算法·leetcode·职场和发展
一只鱼^_9 小时前
牛客练习赛138(首篇万字题解???)
数据结构·c++·算法·贪心算法·动态规划·广度优先·图搜索算法
一只码代码的章鱼9 小时前
Spring的 @Validate注解详细分析
前端·spring boot·算法
邹诗钰-电子信息工程9 小时前
嵌入式自学第二十一天(5.14)
java·开发语言·算法