更弱智的算法学习day 37

完全背包

完全背包问题和01背包的区别主要在“物品可以重复添加”这里。在代码上的区别只有,可以重复选择一个物品;也正是我们在01背包里要注意的,可以选择一个物品,也即内存循环可以从前往后遍历

# 输入 n, bag_weight = map(int, input().split()) weight = [] value = [] for _ in range(n): w, v = map(int, input().split()) weight.append(w) value.append(v) dp = [0] * (bag_weight+1) for i in range(0,n): for j in range(0,bag_weight+1): if j >= weight[i]: dp[j] = max(dp[j] , dp[j-weight[i]]+ value[i]) print(dp[bag_weight])

518. 零钱兑换 II

dp函数的意义:

对应dp[amount]而言,其意义是:当还需要amount面额需要补充时,存在能凑成amount的金额的硬币组合数。

状态转移方程:

也即存在选或不选两种情况:

不选i:dp[i] = dp[i]

选了i:dp[i] = dp[i-1]

因此 dp[j] += dp[j-i]

遍历顺序:

因为是完全背包问题,因此先遍历硬币,在遍历金额,顺序遍历

初始化:

由于金额为0时,有1中选择方法,也即全不选。故dp[0]=1

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

377. 组合总和 Ⅳ

dp函数的意义:

对应dp[target]而言,其意义是:存在一个目标整数target时,从nums中找出的元素排列个数为dp[target]个

状态转移方程:

也即存在选或不选两种情况:

不选i:dp[i] = dp[i]

选了i:dp[i] = dp[i-1]

因此 dp[j] += dp[j-i]

遍历顺序:

因为是完全背包问题,且是求排列数,因此先便利整数,在遍历数组从而实现顺序不同也可以保存下来

初始化:

因为递推公式dp[i] += dp[i - nums[j]]的缘故,dp[0]要初始化为1,这样递归其他dp[i]的时候才会有数值基础。

dp[0]=1

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

70. 爬楼梯 (进阶)

dp函数的意义:

对应dp[n]而言,其意义是:存在一个台阶数n时,从m中找出的楼梯排列个数为dp[n]个

状态转移方程:

也即存在选或不选两种情况:

不选i:dp[i] = dp[i]

选了i:dp[i] = dp[i-1]

因此 dp[j] += dp[j-i]

遍历顺序:

因为是完全背包问题,且是求排列数,因此先便利总数,在遍历数组从而实现顺序不同也可以保存下来

初始化:

因为递推公式dp[i] += dp[i - nums[j]]的缘故,dp[0]要初始化为1,这样递归其他dp[i]的时候才会有数值基础。

dp[0]=1

n,m = map(int, input().split()) dp = [0] * (n+1) dp[0] = 1 for j in range(1,n+1): for i in range(1,m+1): if i <= j: dp[j] += dp[j-i] print(dp[n])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1160743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器用 Linux,和个人电脑用 Linux 有什么不同?

提到 Linux,很多人第一反应是「程序员用的系统」「服务器后台在跑的系统」。但实际上,Linux 既可以装在云服务器上,也可以像 Windows、macOS 一样装在个人电脑上使用。 那么,同样是 Linux,服务器用的 Linux 和个人电脑用的 Linux,到底有什么不同? 定位不同 最核心的区…

非达霉素Fidaxomicin治愈艰难梭菌感染的时间与复发预防剂量

艰难梭菌感染&#xff08;CDI&#xff09;作为医院获得性腹泻的首要病因&#xff0c;其高复发率长期困扰临床。传统治疗依赖万古霉素和甲硝唑&#xff0c;但复发率仍达20%-30%&#xff0c;且可能破坏肠道菌群平衡。非达霉素&#xff08;Fidaxomicin&#xff09;凭借其窄谱杀菌机…

水质氟化物检测仪:技术原理、行业应用与智能化解决方案深度解析

引言水是生命之源&#xff0c;其质量的细微变化直接关联着生态安全与公共健康。在众多水质指标中&#xff0c;氟化物的地位独特而关键。作为一种“双面”元素&#xff0c;饮用水中适宜的氟浓度&#xff08;通常为0.5-1.0毫克/升&#xff09;能有效预防龋齿&#xff0c;但一旦超…

python基于vue的汽车租赁系统的续租django flask pycharm

目录 基于Vue与Python的汽车租赁系统续租功能实现 开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 基于Vue与Python的汽车租赁系统续租功能实现 技术栈组合 系统采用前后端分离架构&#x…

什么是SAC

文章目录为什么需要SACSAC应用场景是怎样的SAC是如何工作的SAC&#xff08;Smart Application Control&#xff0c;智能应用控制&#xff09;引入业务感知技术&#xff0c;对报文中的第4&#xff5e;7层内容和一些动态协议(如HTTP、RTP)进行检测和分类&#xff0c;然后根据分类…

python基于vue的美食外卖点餐平台的设外卖员商家django flask pycharm

目录基于Python与Vue的美食外卖点餐平台设计摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;基于Python与Vue的美食外卖点餐平台设计摘要 该平台采用前后端分离架构&#xff0c;前端使用…

为什么经济学里有那么多数学公式?

要深入理解 “经济学里数学公式多” 的现象&#xff0c;需要从 **“工具的合理必要性”“学术生态的非理性内卷”** 两个层面结合分析 —— 前者解释了数学公式 “为何存在”&#xff0c;后者解释了数学公式 “为何过多甚至泛滥”&#xff0c;二者共同构成了当前经济学中数学公…

开源BI天花板!SuperSonic融合Chat BI+Headless BI,自然语言直接查数据

开源BI天花板&#xff01;SuperSonic融合Chat BIHeadless BI&#xff0c;自然语言直接查数据。还在为写SQL查数据头疼&#xff1f;还在纠结Chat BI的“幻觉”问题&#xff1f;今天给大家推荐一款颠覆式开源BI平台——SuperSonic&#xff01;它创新性融合Chat BI&#xff08;LLM…

成都移动直连中国香港公网线路

成都移动直连中国香港公网线路 摘要 在不考虑IEPL、IPLC等国际专线的情况下&#xff0c;成都移动用户连接中国香港的公网线路选择对网络性能至关重要。本文通过深入的路由分析、性能测试和成本评估&#xff0c;系统对比CMIv2、CMIv1及各类绕路方案的技术特性&#xff0c;为成都…

深度学习分析公司文化与业绩关系

深度学习分析公司文化与业绩关系 关键词:深度学习、公司文化、公司业绩、关系分析、数据挖掘 摘要:本文聚焦于运用深度学习技术来分析公司文化与业绩之间的关系。首先介绍了研究的背景、目的、预期读者等信息,接着阐述了核心概念及它们之间的联系,详细讲解了用于分析的核心…

Windows 11 Hyper-V 虚拟机双网卡网络中断无法恢复问题

Windows 11 Hyper-V 虚拟机双网卡网络中断无法恢复问题 问题概述 在Windows 11专业版24H2环境中&#xff0c;当宿主机物理网卡经历链路状态变化时&#xff0c;Hyper-V虚拟机内部对应虚拟网卡会出现无法恢复网络连接的致命问题。此问题在特定网络配置下表现尤为突出。 系统环境 …

演唱会购票系统的设计与实现

一、研究背景如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传播的主要途…

背景调查:建立企业与人才间的信任基石

在当今的商业环境中&#xff0c;人才已成为企业最核心的资产。一次关键的招聘决策&#xff0c;往往直接影响着企业的未来发展轨迹。然而&#xff0c;当候选人的简历在字面上完美无瑕时&#xff0c;如何透过表象洞察实质&#xff0c;成为了企业人力资源管理的核心挑战。专业的背…

AI原生应用开发必知:上下文理解的10个最佳实践

AI原生应用开发必知&#xff1a;上下文理解的10个最佳实践关键词&#xff1a;AI原生应用、上下文理解、对话系统、多模态交互、用户意图、实体追踪、动态窗口、歧义消除、评估指标、LLM调优摘要&#xff1a;在AI原生应用中&#xff0c;“上下文理解"是让AI从"机械回答…

从背调公司到企业风控能力的内化:一种新的选择

当招聘决策的复杂性不断增加&#xff0c;越来越多的企业开始寻求专业背景调查公司的支持。传统背调公司以专业服务和行业经验为核心&#xff0c;为企业提供了候选人信息核实的重要保障。然而&#xff0c;随着企业数据化管理的深入&#xff0c;一种新的需求正在浮现&#xff1a;…

java学习--LinkedList

一、LinkedList 是什么&#xff1f;LinkedList 是 Java 集合框架中 java.util 包下的一个实现类&#xff0c;它实现了 List、Deque 等接口&#xff0c;底层基于双向链表实现&#xff08;JDK 1.6 及之前是循环链表&#xff0c;之后改为双向链表&#xff09;。简单来说&#xff1…

java学习--HashSet

一、HashSet 是什么&#xff1f;HashSet 是 Java 集合框架中 java.util 包下的实现类&#xff0c;它实现了 Set 接口&#xff0c;底层基于 HashMap 实现&#xff08;可以理解为 HashSet 是 HashMap 的 “马甲”&#xff0c;只使用了 HashMap 的 key 部分&#xff0c;value 是一…

java学习--LinkedHashSet

一、LinkedHashSet 是什么&#xff1f;LinkedHashSet 是 Java 集合框架中 java.util 包下的实现类&#xff0c;它继承自 HashSet&#xff0c;同时实现了 Set 接口&#xff0c;底层基于 LinkedHashMap 实现&#xff08;本质是「哈希表 双向链表」&#xff09;。可以把它理解为&…

渗透测试——Funbox2靶机渗透提权详细过程(FTP匿名登陆与SSH爆破)

今天继续给大家带来vulnhub系列的Funbox2靶机详细的渗透横提权过程&#xff1b; 本次渗透过程&#xff0c;也是学到了新知识&#xff1a; FTP匿名登陆下载文件使用SSH爆破工具登陆用户SUDO提权 文章目录前置准备信息收集访问http页面漏洞一&#xff1a;FTP(匿名登录功能)漏洞二…

必看!2026年EOR名义雇主品牌排行榜,探寻最值得信赖的EOR名义雇主服务解决方案

EOR名义雇主服务在现代企业管理中逐渐成为一种重要趋势。这类服务能够协助企业迅速适应全球市场&#xff0c;让用人更为灵活。通过合作优秀的EOR名义雇主服务商&#xff0c;企业能轻松解决合规问题&#xff0c;避免高昂的法律风险&#xff0c;同时提升薪资管理效率。根据最新的…