背包九讲的个人理解

背包九讲完整详解.pdf 动态规划是编程解题的一种重要手段。1951 年美国数学家 R.Bellman 等人,根据一类多阶段问题的特点,把多阶段决策问题变换为一系列互相联系的单阶段问题,然后逐个加以解决。与此同时,他提出了解决这类问题的“最优化原理”,从而创建了解决最优化问以解决。与此同时,他提出了解决这类问题的“最优化原理”,从而创建了解决最优化问题的一种新方法:动态规划。 立即下载

主要写背包问题最优算法的个人注释,暂时先写0-1背包,完全背包,多重背包,详细基础看https://mp.youkuaiyun.com/postedit

0-1 背包:

weight 物体重量

value 物体价值

w背包可承受上限

for  i=1;i<=n;i++

    for j=w;j>=1;j--

        if(j>weight[i])

            bag[j]=max(bag[j],bag[j-wight[i]]+value[i])

        else

             bag[j]=bag[j];

注:

1 第二重循环从w开始,原因是0-1背包只有放当前物体与不放,若从1开始,一旦j开始大于当前物体重量后,前面数据可能被覆盖,后面再调用前面数据时,已经无法做到当前物体与其他物品合放,用样例模拟一下,就能明白。

2 涉及到放满背包时,bag[0],初始化为0,其他为一个负的极大值,这样,只有当物体重量刚好等于当前j,即给定j当前物品可以将其装满,就放入,后面的物体,给定j,只能刚好等于其重量或者与之前物品合放刚好等于j。

完全背包

for i=1;i<=n;i++

    for j=1;j<=weight;j++

        if j>=weight[j]

        bag[j]=max(bag[j],bag[j-weight[j]]+value[i])

        else 

         bag[j]=bag[j];

注:

     无限物体,解决方法是对于每一步能放则放,然后进行比较,比如物体重量为3时,j为3,放入比较,j为4,与体积为1放入比较,在为6之前,实际上数据还可以用上一行的,但是j为6时,要比较3个,两个该物体都不放,与放一个该物体其他空间用别的物体,还有放两个,前两者通过j为3时已经比较过,这时调用比较结果,得出最后比较结果,因此完全背包j必须从1开始,数据也需覆盖,目前理解是这样。

多重背包:

number数组存放每个物体的数量

for i=1;i<=n;i++

{

    if number[i]*weight[i]<=w

        number[i]=number[i];

    else

        number[i]=w/weight[i]

}

for i=1;i<=n;i++

{

    for k=1;k<=number[i];k*=2

    {

        for j=w;j>=1;j--

           {

                 bag[j]=max(bag[j],bag[j-weight[i]*k]+value[j]*k);
           }

    }

}

   注:

            二分,减时间,拆分后用的是0-1背包,因此,背包的第二层循环(不算二进制拆分)循环从w开始。

背包九讲完整版.pdf 背包九讲pdf资源 立即下载

相关推荐

Power BI----各类切片器的使用

首先介绍切片器的最基础的创建和效果演示,紧跟着介绍切片器在多页中的同步和本身与报表的联动,再然后介绍关于切片器属性的设置,使得交互更加美观,最后介绍几种很好看的第三方的切片器样式和自己构建的可折叠的切片器.........

Itsme_MrJJ的博客 2万+

背包问题和算法理解

本文描述了01背包,2维背包,多重背包,完全背包,混合背包,分组背包,有依赖关系的背包问题及其相应的算法解释。具体实现会在我的guihub(https://github.com/fineday4/knapsack_problem.git)中给出。

weixin_39828926的博客 430

FreeRTOS实战:如何避免HAL_Delay在高优先级中断中的坑(附TIM6配置指南)

本文深入剖析了在STM32 FreeRTOS项目中,于高优先级中断内调用HAL_Delay函数导致系统假死的根本原因——SysTick时基被FreeRTOS占用且优先级最低。文章提供了治本方案:通过配置TIM6作为独立且最高优先级的HAL时基,实现与FreeRTOS系统心跳的解耦,并附上详细的CubeMX配置与代码移植指南,确保系统实时性与稳定性。

weixin_29230059的博客 64

经典算法详解 之 背包算法

算法stringclass优化c           背包问题(Knapsackproblem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。这个问题涉及到了两个条件:一是物品总的大小小于或等于背包的大小,二是物品总的价值要尽量大。 如果我们用子问题定义状态来描述的话可以这样解释:

一个程序员 4975

Codex登录要手机验证码?Cockpit Tools跳过验证保姆级教程

摘要:OpenAI升级风控后,Codex登录需手机验证,增加批量账号使用成本。CockpitTools(GitHub 8.3k star)可绕过验证,支持多AI编程平台账号管理。操作步骤:1) 获取ChatGPT网页Session数据;2) 通过转换工具生成CPA格式JSON;3) 导入工具启动Codex。注意:仅适用于未绑定手机号的账号,Session会过期,且需防范数据泄露风险。商业账号通常直接提供认证文件。(150字)

5838

[亚信线上教学] AX58100: EtherCAT从站设备仿真功能设计教学

什么情况需要开启EtherCAT从站设备仿真功能呢? 一般来说, 当EtherCAT从站产品,不需要使用额外的微控制器介入,或使用不具备EtherCAT从站通讯协议栈的微控制器一同协作的情况下,就必须开启EtherCAT从站设备仿真功能,这样EtherCAT主站才能够正常设置从站设备的工作状态. 亚信AX58100 EtherCAT从站控制芯片的优点 AX58100 EtherCAT从站控制器, 集成2个百兆以太网Phis, 并支持一些额外的控制接口, 例如脉冲宽度调变, 增量, 霍尔编码器, .

allanchou1的专栏 7422

背包九讲(超详细 :算法分析 + 问题分析 + 代码分析)

背包问题1. 01背包问题2. 完全背包问题3. 多重背包问题4. 混合背包问题5. 二维费用的背包问题6. 分组背包问题7. 背包问题求方案数8. 求背包问题的方案9. 有依赖的背包问题 1. 01背包问题 特点:每个物品只能用一次,只能是选择或者不选择 题目链接 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数,N,V,用空格隔

是微风,是晚霞,是无可替代 1万+

基于Python实现身份证信息识别

身份证是一种重要的证件,包含了个人的基本信息,如姓名、性别、出生日期、住址等。在实际应用中,有时需要对身份证进行自动化的识别,以提高工作效率和准确性。本文将介绍如何使用Python实现身份证信息的识别,通过图像预处理、OCR技术和解析算法,实现对身份证号码和其他信息的提取和解析。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

背包九讲——全篇详细理解与代码实现

dd_engi背包九讲的个人整理,包含代码例题及个人理解

良月澪二的博客 16万+

机器人环境仿真软件:Webots_(9).路径规划与导航算法仿真实现

通过仿真,我们可以验证路径规划算法的有效性和鲁棒性,同时优化机器人在不同环境中的导航性能。动态窗口法是一种局部路径规划算法,通过在机器人当前速度空间中选择一个最优的速度窗口,使机器人在动态环境中安全地移动。算法的代价函数通常包括两个部分:从起始点到当前节点的实际代价(g-cost)和从当前节点到目标节点的估计代价(h-cost)。在World Editor中,选择“Insert”菜单,添加“Robot”对象,如“E-puck”或“Thymio”。Dijkstra算法的实现与A*算法类似,但不使用启发函数。

kkchenjj的博客 2006

基于STM32的多功能旅行箱_329

随着智能硬件技术的不断发展,智能化产品逐渐渗透到日常生活的各个领域。旅行箱作为出行必需的工具,其传统功能已无法满足现代用户的需求,尤其是在安全性、便捷性和智能交互方面。为了解决这一问题,本设计基于STM32单片机开发了一款多功能智能旅行箱,集成了移动防盗报警、语音寻箱、GPS定位、称重检测、手势控制和蓝牙通信等多项功能。通过STM32F103RCT6主控芯片与HC-05蓝牙模块进行通信,结合海凌科V20语音识别模块、ATGM336H-5N GPS模块和HX711称重模块,提供了全方位的智能化体验。

483

背包九讲(超值得看的一大坨资料,附代码、视频、资料...)

刷算法题必懂的思想,包含01背包问题、完全背包问题、多重背包问题、混合背包、二维费用的背包问题、分组背包问题、背包问题求方案数、求背包问题的方案;看完后悔你捶我!

qq_40649503的博客 2270

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

博客摘录「 背包九讲——全篇详细理解与代码实现」2024年7月15日

这篇文章涵盖了dd_engi背包九讲的所有内容,基本框架相同,但加上了许多个人的理解、详细解释、代码实现与例题,将伪代码替换成了实际代码,字母都加上了L a T e X LaTeXLaTeX,采用相同的变量,相信能让读者理解透彻,不用再翻那么多博客反复学习。文章最后有我自己整理的各种背包的综合模板,可供参考。背包九讲最新版pdf(beta1.2 20120508)已由作者崔添翼(dd_engi)上传至github,完全公开,不。

hy__j的博客 145

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

背包九讲——01背包问题

背包问题是一类经典的组合优化问题,通常涉及在限定容量的背包中选择物品,以最大化某种价值或利益。问题的一般描述是:有一个背包,其容量为C;有一组物品,每个物品有重量w和价值v。目标是选择一些物品放入背包,使得它们的总重量不超过背包容量,同时总价值最大。这个问题有两个主要变体:0/1背包问题和分数背包问题。

闻道有先后,术业有专攻 2827

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

背包问题(背包九讲)

背包九讲 概述 本文参考自bilibili上up主大雪菜的背包九讲专题:背包九讲专题1、背包九讲专题2 以及AcWing上的相关讲解。 背包问题代表了一类问题,即组合类的最优化问题,就是如果给我们一堆物品(元素),我们要按照某种限从中选出若干个物品(元素),求最大/最小值。 本文将将对如下的九种背包问题给出分析过程以及实现代码(提供C++和Java代码,代码链接:github) /* 1. 01背包问题 2. 完全背包问题 3. 多重背包问题 4. 混合背包问题 5. 二维费用背包问题 6. 分

weixin_42638946的博客 4934

背包九讲3——多重背包问题的理解(Java图解)

多重背包 题目 有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本算法 这题目和完全背包问题很类似。基本的方程只需将完全背包问题的方程略微一改即可,因为对于第i种物品有n[i]+1种策略:取0件,取1件……取n[i]件。令f[i][v]表示前i种物品恰放入一个容量为v的背包的最大权值,则有状态转移方程: f[i][v]=max{f[i-1][v-k*c[i]]+k*w

caigen0001的专栏 1750

c++背包九讲之二维费用背包问题

一、背包九讲总述 关于动态规划问题,最典型的就是背包九讲,先理解背包九讲后再总结关于动态规划的问题 1、01背包问题 2、完全背包问题 3、多重背包问题 4、混合背包问题 5、二维费用的背包问题 6、分组背包问题 7、背包问题求方案数 8、求背包问题的方案 9、有依赖的背包问题 往前四篇博文已经介绍了前四个问题,有需要的同学可以看一下!! 二、二维费用背包问题 二维费用的背包问题是指:对于每件...

weixin_42579072的博客 1297

背包九讲2——完全背包问题的理解(Java图解)

题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是w[i],价值是v[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 基本思路 这个问题非常类似于01背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取0件、取1件、取2件……等很多种。如果仍然按照解01背包时的思路,令dp[i][j]表示前i种物品恰放入一个容量为v的背包的最大权值。仍然可以按照每种物品不同的策略写出状态转移方程,

caigen0001的专栏 2014

背包九讲系列1——01背包、完全背包、多重背包

我在进行一些互联网公司的技术笔试的时候,对于我来说最大的难题莫过于最后的那几道编程题了,这对算法和数据结构有一定程度上的要求,而“动态规划”又是编程题中经常出现的算法类型,并且对于我这种没有搞过ACM竞赛的菜鸟来说,那更是非常难受。以至于很难通过笔试,所以打算好好的学习一下“动态规划”这个部分,就找到了动态规划的经典入门,背包9讲来学习和参考。背包9讲在网上也是有一定影响力的文章,是崔添翼大神的作品

yukunqi的博客 1万+

背包九讲(灵魂版)

多重背包单调队列优化、有依赖的背包问题不明白?dp思想模模糊糊?快进来学习吧

2301_81692739的博客 1192

【笔记】背包九讲-整合版

原版 背包问题九讲 2.0 alpha1 崔添翼 (Tianyi Cui, a.k.a. dd_engi) 背包九讲学习笔记 第一讲 01背包 背包九讲学习笔记 第二讲 完全背包问题 背包九讲学习笔记 第三讲 多重背包 背包九讲学习笔记:第四讲-混合三种背包问题 第五讲-二维费用的背包问题 背包九讲学习笔记 第六讲-分组的背包问题 背包九讲学习笔记 第七讲-有依赖的背包问题 第八讲-泛化物品 ...

秋叶红于二月花 1万+

c++背包九讲之完全背包

一、背包九讲总述 关于动态规划问题,最典型的就是背包九讲,先理解背包九讲后再总结关于动态规划的问题。 1、01背包问题 2、完全背包问题 3、多重背包问题 4、混合背包问题 5、二维费用的背包问题 6、分组背包问题 7、背包问题求方案数 8、求背包问题的方案 9、有依赖的背包问题 上一个博客讲解了c++背包九讲之01背包 二、完全背包问题 完全背包问题: 有n件物品和一个容量为C的背包, 每种...

weixin_42579072的博客 1172

背包九讲——完全背包

完全背包是01背包的加强版,先来看看《背包问题九讲》里是怎么描述这个问题的: 题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 所属专栏:戳我访问 再来看看《背包问题九讲》是怎么解决这个问题的: 基本思路 这个问题非常类似于01背包问题,所不同

黄子乐的博客 965

动态规划——背包九讲

以前写过一篇相应的文章,那时候很多都不理解,很多思路都是乱的,今天自己看了一下那篇,准备再补一下背包九讲的内容,算是自己复习一下了。 01背包 为何01背包的体积可以倒序呢?因为我们01背包如果二维正序的话,其实 dp[i][j]=max(dp[i−1][j−v[i]]+w[i],dp[i][j])dp[i][j]=max(dp[i-1][j-v[i]]+w[i],dp[i][j])dp[i][j]=max(dp[i−1][j−v[i]]+w[i],dp[i][j])其中的dp[i−1][j−v[i]]dp

qq_48344603的博客 537
上一篇: pta 关键活动 (队列)
下一篇: 快速幂
stringexists
博客等级 码龄9年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值