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

代码随想录 | Day46

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 今日学习目标
  • 一、算法题
    • 1.完全背包问题
    • 2.零钱兑换 II
    • 3.组合总和 Ⅳ
  • 学习及参考书籍


今日学习目标

完全背包问题
零钱兑换 II(518)
组合总和 Ⅳ(377)

一、算法题

1.完全背包问题

题目:
有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。

完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。
每种物品有无限个,所以遍历的顺序要从小到大遍历

// 先遍历物品,再遍历背包
for(int i = 0; i < weight.size(); i++) { // 遍历物品for(int j = weight[i]; j <= bagWeight ; j++) { // 遍历背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i]);}
}

2.零钱兑换 II

题目:
给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。

请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。

假设每一种面额的硬币有无限个。

题目数据保证结果符合 32 位带符号整数。

示例 1:

输入:amount = 5, coins = [1, 2, 5]
输出:4
解释:有四种方式可以凑成总金额:
5=5
5=2+2+1
5=2+1+1+1
5=1+1+1+1+1

代码:

lass Solution {
public: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];}
};

3.组合总和 Ⅳ

题目:
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。

题目数据保证答案符合 32 位整数范围。

示例 1:

输入:nums = [1,2,3], target = 4
输出:7
解释:
所有可能的组合为:
(1, 1, 1, 1)
(1, 1, 2)
(1, 2, 1)
(1, 3)
(2, 1, 1)
(2, 2)
(3, 1)
请注意,顺序不同的序列被视作不同的组合。

代码:

class Solution {
public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target + 1, 0);dp[0] = 1;for (int i = 0; i <= target; i++) { // 遍历背包for (int j = 0; j < nums.size(); j++) { // 遍历物品if (i - nums[j] >= 0 && dp[i] < INT_MAX - dp[i - nums[j]]) {dp[i] += dp[i - nums[j]];}}}return dp[target];}
};

学习及参考书籍

代码随想录

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

相关文章:

  • word行内插入mathtype 公式后行距变大解决办法
  • 直播预告 | YashanDB 2023年度发布会正式定档11月2日,邀您共同见证国产数据库发展实践!
  • 一文读懂WebClient和RestTemplate的差异
  • 如何使用SpringBoot处理全局异常
  • 【2023CANN训练营第二季】——通过一份入门级算子开发代码了解Ascend C算子开发流程
  • 建模仿真软件 Comsol Multiphysics mac中文版软件介绍
  • 深入理解强化学习——强化学习的历史:近代强化学习的发展
  • 移动端ViT新利器!苹果提出稀疏专家混合模型Mobile V-MoEs
  • 【linux系统】服务器安装Pycharm
  • 便利连锁:如何增加收益?教你一招轻松搞定!
  • STM32-程序占用内存大小计算
  • 鱼眼图像去畸变python / c++
  • 文心一言简单体验
  • css正确的语法
  • 【PG】PostgresSQL角色管理
  • 百度智能云获评Forrester中国市场人工智能/机器学习平台领导者
  • 基于java+swing+mysql实现的仓库商品管理系统
  • 深入理解Spring Boot AOP:CGLIB代理与JDK动态代理的完全指南
  • 【无标题】读书笔记之《智能化社会:未来人们如何生活、相爱和思考》
  • 华为云双十一服务器数据中心带宽全动态BGP和静态BGP区别
  • STM32 HAL库串口使用printf
  • 【VPX610】 青翼科技基于6U VPX总线架构的高性能实时信号处理平台
  • Parity 战略转型引热议,将如何推动波卡生态去中心化?
  • 【TES641】基于VU13P FPGA的4路FMC接口基带信号处理平台
  • Spring Kafka生产者实现
  • 手把手教你入门Three.js(初识篇)
  • Hadoop学习总结(搭建Hadoop集群(伪分布式模式))
  • 人性与理性共赢,真心罐头跃过增长的山海关
  • 【Redis】Docker部署Redis数据库
  • 【目标跟踪】多目标跟踪测距