当前位置: 首页 > news >正文

LeetCode322:零钱兑换

题目链接:322. 零钱兑换 - 力扣(LeetCode)

代码如下

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 - coins[i]] + 1, dp[j]);}}}if(dp[amount] == INT_MAX)   return -1;  //这个就是硬币书凑不出amount了,所以dp[amount]只能为INT_MAXreturn dp[amount];}
};

这个题目其实也就是相当于我们写前面那个零钱组合一样,但是之前的那个零钱组合是相求出组合数有多少个,而这个是找出能够组合的钱币然后输出最小的组成数,很明显,这个题目所说的amount也就是我们所要的背包容量,我们接下来第一步先确定dp[j]的含义,dp[j]也就是我们的背包最小容量,dp递推公式是dp[j] = min(dp[j], dp[j - coins[i] + 1])这里为什么是+1而不是加coins[i], 因为题目给的是,要求出的硬币数量,而不是要求出能装的背包大小,for循环里面的有一个判断条件,也就是if(dp[j - coins[i]] != INT_MAX),这个是为什么呢,因为我们需要找到当前dp数组是被初始化的,然后我们才能进行下一步赋值,如果这个数组没有被初始化了,也就是不满足这个背包问题了。

http://www.lryc.cn/news/462433.html

相关文章:

  • 速盾:高防 cdn 提供 cc 防护?
  • 【大数据应用开发】2023年全国职业院校技能大赛赛题第10套
  • 【源码部署】解决SpringBoot无法加载yml文件配置,总是使用8080端口方案
  • 2010年国赛高教杯数学建模B题上海世博会影响力的定量评估解题全过程文档及程序
  • 使用nginx配置静态页面展示
  • [IOI2018] werewolf 狼人(Kruskal重构树 + 主席树)
  • snmpgetnext使用说明
  • frameworks 之 触摸事件窗口查找
  • memset的用法
  • 阿里云国际站DDoS高防增值服务怎么样?
  • open-cd中的changerformer网络结构分析
  • 太速科技-426-基于XC7Z100+TMS320C6678的图像处理板卡
  • asp.net Core 自定义中间件
  • 掌握 C# 设计模式:从基础到依赖注入
  • 根据json转HttpClient脚本
  • 如何将LiDAR坐标系下的3D点投影到相机2D图像上
  • JAVA就业笔记6——第二阶段(3)
  • 02.04、分割链表
  • Excel 中根据患者的就诊时间标记病例为“初诊”或“复诊”
  • 遇到“mfc100u.dll丢失”的系统错误要怎么处理?科学修复mfc100u.dll
  • [Linux] 逐层深入理解文件系统 (1)—— 进程操作文件
  • RT-Thread 互斥量的概念
  • 6.计算机网络_UDP
  • Windows应急响蓝安服面试
  • PCL 点云配准-4PCS算法(粗配准)
  • 12、论文阅读:利用生成对抗网络实现无监督深度图像增强
  • Axure重要元件三——中继器表单制作
  • DMAIC赋能智能家居:解锁未来生活新篇章!
  • 代码随想录算法训练营第二天| 209.长度最小的子数组 59.螺旋矩阵II 区间和 开发商购买土地
  • mysql隐藏索引