代码随想录算法训练营第44天 | 完全背包理论基础 + 518.零钱兑换 II + 377.组合总和 Ⅳ

news/2025/2/12 16:55:46/

今日任务

目录

完全背包理论基础

518.零钱兑换 II - Medium

377.组合总和 Ⅳ - Medium


完全背包理论基础

理论基础:代码随想录

完全背包

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

完全背包和01背包问题唯一不同的地方就是,每种物品有无限件;解题过程的唯一不同之处,体现在遍历顺序上。

完全背包的物品是可以添加多次的,所以对背包大小的遍历要从小到大。

完全背包中,两个for循环的先后循序,都不影响计算dp[j]所需要的值。

示例代码:

def test_CompletePack():weight = [1, 3, 4]value = [15, 20, 30]bagWeight = 4dp = [0] * (bagWeight + 1)for i in range(len(weight)):  # 遍历物品for j in range(weight[i], bagWeight + 1):  # 遍历背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i])print(dp[bagWeight])test_CompletePack()

518.零钱兑换 II - Medium

题目链接:力扣-518. 零钱兑换 II

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

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

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

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

提示:凑成总金额j的货币组合数为dp[j];遍历顺序不能变,先遍历物品再遍历背包

class Solution:def change(self, amount: int, coins: List[int]) -> int:dp = [0] * (amount+1)dp[0] = 1for coin in coins:for j in range(coin, amount+1):dp[j] += dp[j-coin]return dp[amount]

377.组合总和 Ⅳ - Medium

题目链接:力扣-377. 组合总和 Ⅳ

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

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

 提示:结果求排列的数量,先遍历背包再遍历物品

class Solution:def combinationSum4(self, nums: List[int], target: int) -> int:dp = [0] * (target+1)dp[0] = 1for j in range(target+1):for num in nums:if j < num:continuedp[j] += dp[j-num]return dp[target]

http://www.ppmy.cn/news/539353.html

相关文章

4500套Excel模板[最全面]

将工作表的特定格式、固定的文字数据和公式等保存为模版&#xff0c;再调用模版时就不必对固定的格式、文字数据和公式进行重复设置&#xff0c;而只需填写必要的变动数据即可完成指定任务。 这是模版的基本用途。 ★模板&#xff0c;是根据工作实际需要自己设置。将拟作模板…

DLP 4500问题处理(持续更新)

DLP4500 只能投射912*1140分辨率的问题。 https://e2echina.ti.com/question_answer/dlp_mems/f/106/t/117649?keyMatch912%201140&tisearchSearch-CN-everything https://e2e.ti.com/support/dlp/f/94/t/457771?tisearche2e-sitesearch&keymatchdlp4500%20add%20im…

锐龙r5 4500u参数 r5 4500u性能怎么样 锐龙5 4500u什么水平

r5 4500u相当于英特尔i5 8250&#xff0c;R5 4500u作为AMD锐龙4000系列的新处理器&#xff0c;14nm处理器&#xff0c;内置Vega 8cu核心显卡&#xff0c;4MB三级缓存&#xff0c;6核6线程&#xff0c;主频2.3ghz&#xff0c;最大睿频4GHz&#xff0c;功耗设计为15W。支持DDR4 3…

HTML做一个传统节日端午节 带设计报告4500字

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

年轻人搞副业有多野:月薪4500,副业收入上万

前段时间&#xff0c;微博上有个热搜特别火&#xff0c;副业刚需。 意思是&#xff0c;在现在这个飞速发展的时代里&#xff0c;很多人觉得靠自己那点微薄的工资&#xff0c;很难养活自己&#xff1b;更是稍不留神&#xff0c;就被同龄人甩开一大截。 上面这张微博投票显示&…

C# 实现虚拟打印机 HP Color LaserJet 4500 (1)

C# 实现虚拟打印机 HP Color LaserJet 4500 1 无聊了研究了下PCL和HPGL两种语言。如果要实现虚拟打印机只使用.NET来做&#xff0c;驱动是最大的问题。其实我们可以使用已经写好的打印机驱动来实现。只是让驱动最终生成的打印语言输出到我们想要的位置。并且我们对打印语言进行…

linux ikev2 端口,ipsec使用的500端口和4500端口可以似乎被封杀了?

从几周前开始突然连不上了,ipsec start --nofork 前台运行打印的日志显示 15[NET] received packet: from 116.253.84.217[500] to 162.243.153.127[500] (604 bytes) 15[ENC] parsed IKE_SA_INIT request 0 [ SA KE No N(REDIR_SUP) N(NATD_S_IP) N(NATD_D_IP) N(FRAG_SUP) ]…

## 我今年25岁,月入4500,怎么慌成这样?

## 我今年25岁&#xff0c;月入4500&#xff0c;怎么慌成这样&#xff1f;之前在某个职场大号看到有粉丝留言&#xff1a; “不知道为什么&#xff0c;不管怎样努力好像都没什么用&#xff0c;职位没有提升&#xff0c;收入也上不去&#xff0c;和同龄人的差距越来越大……” …