【基础】背包九讲之“01背包”

【算法学习】01背包问题 01背包问题 相当于还是求n个物品的组合! 暴力解法: 每一件物品,都可以放进背包,也可以不放进。复杂度是O( (2^n) * n ), 对于每一个组合,还要看看对应的总重是多少,看看是不是超过了容量C,从而看价值。 组合方式都可以用递归的方式来求解。只是是能不能找到重叠子问题、最优子结构,从而转换为DP。 设计: 状态:之前状态都使用一个参数就解决了问题,通常问题中参数的个数意味着要解决问题需... 阅读详情

如果想了解更多内容,欢迎关注我的微信公众号:信息学竞赛从入门到巅峰。

 

动态规划(简称DP)在当今赛场上所占的比例越来越多。今天,我们就来讲讲动态规划的入门问题——背包问题。

背包问题有众多类型,其中“01背包”、“完全背包”最为典型(当然,其他类型也很重要)。我们先来讲解一下如何解决“01背包”的问题。

问题化简

01背包的问题一般可以简化为:

    有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使总价值最大。

 

一个错误的想法

看到这个问题,你的第一想法是不是像购物一样,挑性价比最高的放到背包中呢?然而,这是一种贪心(此处无贬义)的想法,存在严重的局限性的。

举个栗子,如果挑选性价比高的物品,可能消耗了较小的背包容量,但是背包剩下的容量也无法放下其他物品,导致了总价值无法到达最大。

下面这个表格清晰的体现了贪心算法的局限性。

假设背包容量V = 9, 物品数量N = 4。

c[i](费用)7333
w[i](价值)5222

显然,物品1的性价比最高,但是选择了物品1就无法再放其他物品。然而,选择物品2,3,4的价值为9,方案更优。

 

正解驾到

那么正解是什么呢?

我们先来讲解一下动态规划的核心思想:从局部最优解计算全局最优解。

换句话说,就是将原问题分解成若干个容易求解的小问题,通过小问题的答案来计算原问题的答案。

我们定义一个二位数组f[N][V]。

其中,f[i][j]表示前i件物品中,占用了背包j的容量,所能得到的最大价值。

当我们再考虑当前已经背包用了j的容量,第i+1件物品选不选的时候,显然f[1...i][0...V]已经都求出来了。

如果第i+1件物品不选,那么所得价值和f[i][j]的值是一样的。

如果第i+1件物品要选,那么前i件物品只能占用j-c[i+1]的背包容量。所以,这种情况下所得到的价值为f[i][j-c[i+1]] + w[i]。

综合上述两种情况,我们可以得到转移方程:

f[i][j] = max(f[i - 1][j], f[i - 1][j - c[i]] + w[i])

通过这个转移方程,我们很容易就能写出程序:

for (int i = 1; i <= N; ++i) 
    for (int j = 0; j <= V; ++j) //Attention: j start from 0 !!!
        if (j >= c[i]) //important!!!
            f[i][j] = max(f[i - 1][j], f[i - 1][j - c[i]] + w[i]);
int ans = 0;
for (int j = 0; j <= V; ++j)
    ans = max(ans, f[N][j]); //find the biggest value

我们可以发现,01背包的时间复杂度是O(NV),空间复杂度也是O(NV)。

但是,01背包的空间复杂度是可以优化的,具体请关注我的公众号哦。

背包问题 01背包问题 时间复杂度O(n*v),空间复杂度O(v) 其中n是物品个数,v是背包大小。 (x, y) 表示物品大小为x,价值为y 设置状态dpij,表示考虑到前i个物品用大小为j的背包所能装的最大价值 A. 考虑第i个物品可以不要这个物品。dpij = dpi-1j 比如已经用(1, 2)(1, 3)两个物品装进背包,那么此时背包大小为2的时候我们最大价值为5。 现在考虑第三个物品(2,4)... 阅读详情

相关推荐

动态规划总结三01背包问题

01背包问题一般是利用动态规划进行解题的,这里通过leetcode1049来讲解01背包的解题思路以及如何对01背包应用题目转换和理清思路 01背包问题: 这里借用学习公众号代码随想录的一张图来说明背包问题的种类 对于面试的话,其实掌握01背包,和完全背包,就够用了,最多可以再来一个多重背包。 首先来看01背包问题的描述 有N件物品和一个最多能被重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 对于这种

weixin_56921066的博客 1477

01背包(动态规划解法)

01背包(动态规划解法) 01背包是一个很经典的问题,题目如下:有n件物品和一个最多能装重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,问怎样装载能使背包里物品的价值最大。 这里我们用一组简单的数据来进行示例:假设背包最大容量为5 物品 重量 价值 物品0 1 15 物品1 2 20 物品2 3 25 物品3 4 30 它与普通背包的区别在于,每个物品要么放,要么不放,而普通背包是可以放一部分的,因而普通背包可以通

weixin_43414877的博客 3108

背包九讲

有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。第 ii 件物品的体积是 vivi,价值是 wiwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。

qq_74794797的博客 1395

【动态规划专栏】-- 01 背包问题 -- 动态规划经典题型

4道《01背包问题》动态规划算法经典题型

weixin_64609308的博客 7923

C++继承与多态 - 继承多态原理01

C++继承多态原理讲解

大秦坑王的专栏 2979

【5G全网建设】Option3X和Option2模式建安市、兴城市和四水市核心网、承载网网络设计与部署

拓扑规划: Option 3X网络拓扑图规划 Option 2网络拓扑图规划 设备部署: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 数据配置: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 业务调试

weixin_67183034的博客 8858

背包九讲——01背包问题

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

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

浮点数运算的陷阱与启示:FP16加法器/乘法器开发中的常见误区

本文深入探讨FP16加法器和乘法器开发中的常见误区,包括FP16格式解析、阶码对齐陷阱、尾数运算风险及规格化处理。通过Verilog实战代码展示防御性编程技巧,帮助开发者避免边界条件处理和异常状态管理中的错误,提升硬件设计的可靠性和效率。

dell8的博客 251

背包九讲——背包问题求具体方案

f[i][j]的上一个状态就是从i+1转移过来的,因为我们定义从第i个物品到最后一个物品,第i+1个物品到最后一个之间的数量是不是比第i个物品到最后一个物品少。f[i+1][j]是不选第i个物品,f[i+1][j-v[i]]+w[i]是选第i个物品。因为我要在所有f[i][j]当中选择一个最大值,所以前面我管不管的先初始化为不选,往后如果背包容量大于体积,那我再看看是选了这个物品总价值是否增大,如果增大就更新,不增大就保持原来。

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

野火STM32F407(骄阳)+无刷直流驱动板+永磁同步电机控制学习记录(四)(基于HAL库)

以上内容都是参考别人资料自学的,很多地方都是凭感觉,因为理论部分不太会算,只要电机能转就行,其他性能指标都没考虑,因为不会,所以这纯属是学习记录帖。带宽在500时,电流波动小,但是响应很慢,就是堵转后不太容易恢复转动。速度环带宽设定小了,响应不够快,带宽设定大了波动比较大,电机感觉起来也震一点,而且,当带宽设到200的时候,启动直接就锁死了,应该是PI增益设定太大了。电流环带宽的试验:去掉速度环,让Iq_Set=2,Ud=0,此时电机是电流环闭环控制,用手堵转电机然后松开,看电流的波动以及响应情况。

XUEXIDEXIAOhai的博客 4554

5g LDPC编译码-LDPC编码

本文摘要:LDPC编码是5G业务信道的核心编码技术,属于线性分组码。5G中LDPC编码分为两种基图类型(BG1和BG2),通过码块分割、CRC处理等步骤实现。编码过程主要涉及校验矩阵生成和校验位计算,其中校验矩阵采用稀疏矩阵结构。文中详细介绍了5G LDPC编码的具体实现流程,包括码块分割规则、校验位生成方法,以及两种基图(BG1和BG2)在矩阵结构和参数设置上的差异,重点阐述了通过模块化方法求解校验比特位的技术路径。

weixin_38270585的博客 1365

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

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

yukunqi的博客 1万+

一文搞定离线环境下的RAG引擎部署

在人工智能浪潮下,技术已成为构建智能问答、文档分析和代码助手等应用的核心。然而,在许多企业场景中,出于数据安全和性能的考虑,服务器往往部署在中,并要求极致的推理效率。这给依赖外部资源的应用部署带来了巨大挑战。如何在这种严苛的环境下,完整、可靠地部署一套包含向量数据库、**高性能推理服务(vLLM)**和Python后台的复杂RAG系统呢?本文将为你提供一个,手把手教你如何使用 Docker 技术,将一套基于 Weaviate 和的 Python RAG 应用完整打包,并在离线环境中一键部署。

木鱼时刻的专栏 1242

背包问题(背包九讲)

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

weixin_42638946的博客 4934

华为OD机试真题-国际移动用户识别码(IMSI)匹配

华为OD机试双机位C卷 国际移动用户识别码(IMSI)匹配 , 提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 国际移动用户识别码(IMSI)匹配

qq_45776114的博客 4927

背包九讲总结

文章目录前言一、01背包(二维分析、一维优化)1.背景2.分析3.代码二、完全背包(与01背包比较)1.背景2.分析3.代码三、多重背包(朴素、二进制优化划分、单调队列优化)1.背景2.分析3.代码四、1.背景2.分析3.代码 前言 <font color=#999AAA 根据y总的视频,总结了一下背包九讲的内容,准备好好搞一下dp问题。 一、01背包(二维分析、一维优化) 1.背景 01背包 先给定背包容积大小V,再给定物品数目N,之后根据N的值输入每个物品的体积v[i]跟价值w[i],问背

qq_52441682的博客 1768

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

背包九讲【进阶版】(上)

本文重新梳理了动态规划中的背包问题,包括01背包、完全背包,多重背包、混合背包和二维费用背包以及各自的优化方式。

2402_88147924的博客 1174

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

c++背包九讲之01背包

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

weixin_42579072的博客 1163

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

背包九讲!!!

所以有必要将它详细的解释一下:若只考虑第i件物品的策略(放或不放),那么就可以转化为只牵扯前 i-1件物品的问题。如果放第 i 件物品,那么问题就转化为“前i-1件物品放入一个容积为 j-v[i]的背包中”,此时获得的最大价值就是 f[i-1] [j-v[i]]再加上放入第 i 件物品所获得的价值w[i].的多种情况中取最值,当k=0时,f [ i − 1 ] [ j − k ∗ c [ i ] ] + k ∗ w [ i ] 就相当于f [ i − 1 ] [ j ] ,也就是这件物品一件也不取的情况。

2402_88000128的博客 1005

[转]背包九讲

背包问题九讲 v1.0 目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 第八讲 泛化物品 第九讲 背包问题问法的变化

sky_fighting的专栏 2955

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

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

weixin_42579072的博客 1297

dd大牛的背包九讲-背包问题汇总

本文转载自https://blog.youkuaiyun.com/m0_37809890/article/details/83153974,若有侵权,请联系我会及时删除 背包九讲 目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 第八讲 泛化物品 第九讲 背...

Charles的博客 6万+

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

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

weixin_42579072的博客 1172

c++背包九讲之混合背包

一、背包九讲总述 关于动态规划问题,最典型的就是背包九讲,先理解背包九讲后再总结关于动态规划的问题。 1、01背包问题 2、完全背包问题 3、多重背包问题 4、混合背包问题 5、二维费用的背包问题 6、分组背包问题 7、背包问题求方案数 8、求背包问题的方案 9、有依赖的背包问题 往前三篇博客分别介绍了01背包、完全背包和多重背包,有需要的可以看一下。 二、混合背包问题 混合背包问题就是混合0...

weixin_42579072的博客 2885
上一篇: 【bzoj2096】 [Poi2010]Pilots
下一篇: 【基础】01背包优化及应用。
Timothy023
博客等级 码龄9年 4粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值