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

力扣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];}
};

相关文章:

  • 【大模型】情绪对话模型项目研发
  • 区域未停留检测算法AI智能分析网关V4打造铁道/工厂/机场等场景应用方案
  • 2025 年 Solana 生态全景分析:它如何从以太坊「高速替代方案」成长为成熟的基础设施?
  • 换ip是换网络的意思吗?怎么换ip地址
  • write和read命令中的通道号指南
  • 使用Vditor将Markdown文档渲染成网页(Vite+JS+Vditor)
  • LangChain第二页_【教程】翻译完了
  • 将Kotti从Pyramid1.0升级到2.0 (失败的记录)
  • 【Linux 基础知识系列】第三篇-Linux 基本命令
  • JavaScript 变量声明:var vs let vs const详情
  • 如何使用windows下的vscode连接到本地虚拟机的linux
  • 数据库概念
  • 第二章支线二:浮空之域:布局法则深研
  • C与C++相互调用
  • C++继承与构造函数调用详解
  • MySQL中怎么看是否走了索引
  • springboot java.lang.ClassNotFoundException: dm.jdbc.driver.DmDriver应该如何解决
  • Java Spring 之拦截器HandlerInterceptor详解与实战
  • 解决方案:__cplusplus宏的值始终为199711L(即 C++98)
  • 分布式存储技术全景解析:从架构演进到场景实践
  • 商城类网站和o2o网站/second是什么意思
  • 建设教育信息网站工作总结/杭州优化外包哪里好
  • wordpress登录页面自定义/关键词排名优化是什么意思
  • 天津和平做网站哪家好/关键词优化排名软件
  • 茶山做网站/免费文案素材网站
  • 服装企业网站策划书/seo文章范文