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

力扣HOT100之动态规划:322. 零钱兑换


这道题和上一道题279.完全平方数的套路是完全一样的,但是这道题不需要我们自己生成物品列表,函数的输入中已经给出了,但是这道题有一个坑,就是我们在初始化dp数组的时候,所有的位置不应该赋值为INT_MAX,因为在dp[j - nums[i]] + 1这一步可能出现溢出的情况,所以我们应当初始化为一个稍小的较大值,如INT_MAX / 2等。这个思路是一样的,这里就简单的说一下动规五部曲:
1.确定dp[j]的含义:在背包容量为j的情况下,装满背包的最少硬币个数为dp[j]
2.确定递推公式 dp[j] = min(dp[j - coins[i]] + 1, dp[j]);
3.dp数组初始化 dp[0] = 0
4.确定遍历顺序:先物品,再背包(不涉及排列组合的问题,可以颠倒)
5.打印数组(省略)

class Solution {
public:int coinChange(vector<int>& coins, int amount) {//1.确定dp[j]的含义:在背包容量为j的情况下,装满背包的最少硬币个数为dp[j]//2.确定递推公式  dp[j] = min(dp[j - coins[i]] + 1, dp[j]);//3.dp数组初始化 dp[0] = 0//4.确定遍历顺序:先物品,再背包(可以颠倒)//5.打印数组(省略)vector<int> dp(amount + 1, INT_MAX / 2);//初始化dp[0] = 0;for(int i = 0; i < coins.size(); i++){  //遍历物品for(int j = coins[i]; j <= amount; j++)    //遍历背包dp[j] = min(dp[j - coins[i]] + 1, dp[j]);}return dp[amount] == INT_MAX / 2 ? -1 : dp[amount];}
};
http://www.lryc.cn/news/2394353.html

相关文章:

  • 电商售后服务系统与其他系统集成:实现售后流程自动化
  • kafka学习笔记(三、消费者Consumer使用教程——消费性能多线程提升思考)
  • mongodb删除字段
  • [JVM] JVM内存调优
  • Liunx部署ES单机集群
  • 秒出PPT正式改名秒出AI,开启AI赋能新体验!
  • Unity中的AudioManager
  • VM改MAC电脑密码(截图)
  • SpringBoot+Vue+微信小程序校园自助打印系统
  • 【论文精读】2024 CVPR--Upscale-A-Video现实世界视频超分辨率(RealWorld VSR)
  • 学术合作交流
  • 【线上故障排查】Redis缓存与数据库中数据不一致问题的排查与同步策略优化
  • 【Git命令】
  • 【LUT技术专题】图像自适应3DLUT
  • 德拜温度热容推导
  • 扫一扫的时候会经历哪些事
  • Typescript学习教程,从入门到精通,TypeScript 泛型与类型操作详解(二)(17)
  • 【iOS】源码阅读(五)——类类的结构分析
  • 基于CangjieMagic的RAG技术赋能智能问答系统
  • 算力租赁革命:弹性模式如何重构数字时代的创新门槛​
  • 图论回溯
  • 使用arthas热替换在线运行的java class文件
  • RFID测温芯片助力新能源产业安全与能效提升
  • S32K3 工具篇9:如何在无源码情况下灵活调试elf文件
  • Nacos 配置文件总结
  • ASP.NET Web Forms框架识别
  • LG P4119 [Ynoi2018] 未来日记 Solution
  • 流程引擎选型指南
  • 基于大模型预测带状疱疹(无并发症)诊疗方案的研究报告
  • 哈工大计统大作业-程序人生