当前位置:网站首页>力扣:322. 零钱兑换
力扣:322. 零钱兑换
2022-08-09 22:11:00 【empty__barrel】
力扣:322. 零钱兑换
题目:
给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。
计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。
你可以认为每种硬币的数量是无限的。
dp【j】的含义:
dp[j]:凑足总额为j所需钱币的最少个数为dp[j]
递推公式:
dp[j] = min(dp[j - coins[i]] + 1, dp[j]);
初始化:
dp【0】为0的原因:amount是可以等于0的,同时按道理来讲很明显dp【0】 = 0
因为dp[j]选择的是二者中较小的那一个 = min(dp[j], dp[j-coins[i]]+1);所以下标非0的元素都是应该是最大值。
遍历顺序:
此题是完全背包类型,所以从小到大来 遍历,同时所求的是最少的硬币个数并没有涉及到序列,所以本题的两个for循环的嵌套无要求,谁先谁后都行。
递归函数前设置判断条件的原因:
因为dp[j] = min(dp[j], dp[j-coins[i]]+1);
这个操作假如dp[j - coins[i]] == INT_MAX
那么dp[j-coins[i]]+1
就越界了,所以要设置一个判断条件。
代码:
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
vector<int>dp(amount+1,INT_MAX);
dp[0] = 0;
for(int i = 0; i < coins.size(); ++i){
for(int j = coins[i]; j <= amount; ++j){
if (dp[j - coins[i]] != INT_MAX) dp[j] = min(dp[j], dp[j-coins[i]]+1);
}
}
if(dp[amount] == INT_MAX) return -1;
return dp[amount];
}
};
边栏推荐
猜你喜欢
HUAWEI CLOUD escorts the whole process of "Wandering Ark" for the first time, creating a popular brand
少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(判断题)2022年6月
2022-8-9 第六组 输入输出流
直播预告 | ICML 2022 11位一作学者在线分享神经网络,图学习等前沿研究
Install win7 virtual machine in Vmware and related simple knowledge
Tencent continues to wield the "big knife" to reduce costs and increase efficiency, and free catering benefits for outsourced employees have been cut
用PLSQL导出Oracle一个表
“我“是一名测试/开发程序员,小孙的内心独白......
【技术分享】SLA(服务等级协议)原理与配置
HBuilder X 不能运行到内置终端
随机推荐
(转)字符集编码标识符,数字表示字符编码
信息系统项目管理师---第十一章项目风险管理历年考题
HUAWEI CLOUD escorts the whole process of "Wandering Ark" for the first time, creating a popular brand
p5.js实现的炫酷星体旋转动画
H5实现分享功能
Vmware中安装win7虚拟机以及相关简单知识
Mysql集群 ShardingSphere
leetcode:286.墙和门
VR全景结合小程序,为线上电商更好的服务
直播预告 | ICML 2022 11位一作学者在线分享神经网络,图学习等前沿研究
为什么刀具数据库无法打开?
国内十大活跃报表 BI 产品深度对比及点评
shader学习笔记(五)
三:OpenCV图片颜色通道数据转换
高手这样看现货白银走势图
SRv6性能测量
Sun Zhengyi lost 150 billion: it was expensive at the beginning
R语言patchwork包将多个可视化结果组合起来、使用plot_annotation函数以及tag_level参数将组合图用大写字母进行顺序编码、为组合图的标签添加自定义前缀信息
How to insist to use procedural system?
What is the stability of the quantitative trading interface system?