算法 第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

相关推荐
Rabitebla几秒前
【系统性学习笔记】Linux 权限篇(二):文件属性、权限修改与目录权限的底层逻辑
linux·c++·笔记·学习·算法
远离UE412 分钟前
半拉格朗日学习笔记 动力学 实时渲染
人工智能·算法
小郎君65820 分钟前
MPTT 不是万能编号:一棵百万节点树的增删改与批量事务
算法
FPGA小徐28 分钟前
【一生一芯 / PA】AM 核心文件逐行解析(上):从 start.S 到 gpu.c
前端·算法
lvwangshu38 分钟前
P8981 「DROI」Round 1 距离 题解
动态规划·图论·题解·dp·树形dp·技巧·换根dp·性质题·思维好题
Tairitsu_H1 小时前
[动态规划#1] 子数组 | 最大子数组和 | 环形子数组的最大和 | 乘积最大子数组 | 乘积为正数的最长子数组
算法·动态规划
凯瑟琳.奥古斯特2 小时前
动态调优IoU提升OCR文本合并精度
开发语言·python·算法
布莱克6052 小时前
A* 算法详解:从原理到实现
开发语言·c++·算法
段一凡-华北理工大学2 小时前
高炉炼铁机器视觉与智能识别十八讲~系列文章15:可靠性篇:防误报、容错与识别系统的鲁棒性设计
人工智能·算法·机器学习·高炉大模型·高炉机器视觉·高炉炼铁模型开发
某林2123 小时前
局部路径规划器 DWB:速度采样与评分权重的取值分析
人工智能·算法·架构·机器人·技术复盘