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

代码随想录算法训练营day44 | LeetCode 518. 零钱兑换 II 377. 组合总和 Ⅳ

        今晚学习了完全背包的做法,和01背包的差别具体来说就是一个可以重复,一个不可以重复。体现在数组的遍历中来说就是完全背包不能用二维数组做法(因为二维dp数组一定不会重复,但是还没验证过),只能用一维dp数组,且背包容量for循环必须是顺序遍历,这样可以方便重复。碰到组合问题时,物品循环放外面,背包容量循环放里面;碰到排列问题时,背包容量循环放外面,物品循环放里面。(如果物品循环放外面,那么物品的顺序一定是固定了的,从前往后)

518. 零钱兑换 II(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台)

思路:典型的完全背包组合题。

int change(int amount, vector<int>& coins) {vector<int> dp(amount+1, 0);dp[0] = 1;for(int i=0; i<coins.size(); i++){for(int j=coins[i]; j<=amount; j++){dp[j] += dp[j-coins[i]];}}return dp[amount];
}

377. 组合总和 Ⅳ(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台)

思路:典型的完全背包排列题。

int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target+1, 0);dp[0]=1;for(int j=0; j<=target; j++){for(int i=0; i<nums.size(); i++){if(j>=nums[i] && dp[i] < INT_MAX - dp[j-nums[i]]) dp[j] += dp[j-nums[i]];}}return dp[target];
}

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

相关文章:

  • Vue2向Vue3过度核心技术工程化开发和脚手架
  • Expected all tensors to be on the same device, but found at least two devices
  • Mysql备份命令Mysqldump导入、导出以及压缩成zip、gz格式
  • App卡帧与BlockCanary
  • bpmnjs Properties-panel拓展(ExtensionElements拓展篇)
  • 虚拟机的使用
  • CSS Flex布局
  • Virtual
  • 6、监测数据采集物联网应用开发步骤(5.2)
  • 解释 Git 的基本概念和使用方式
  • 不同ubuntu系统下的不同ros系统可以互相通讯吗
  • 数学建模-模型详解(2)
  • IT运维:使用数据分析平台监控DELL服务器
  • Spring Cloud Alibaba-Sentinel规则
  • go http-proxy
  • 用变压器实现德-英语言翻译【01/8】:嵌入层
  • 【vue3.0中ref与reactive的区别及使用】
  • 计算机竞赛 基于情感分析的网络舆情热点分析系统
  • C++ 动态分配内存|动态数组
  • React Diff算法原理
  • 查局域网所有占用IP
  • 【MySQL】引擎类型
  • springMVC之HttpMessageConverter
  • 计算机网络aaaaaaa
  • pdf.js构建时,报Cannot read property ‘createChildCompiler‘ of undefined #177的解决方法
  • Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【六】
  • idea配置注释模板
  • Unity编辑器扩展:提高效率与创造力的关键
  • Java之对象引用实践
  • IntelliJ IDEA快捷键大全 + 动图演示!