算法设计-动态规划法解背包问题 C代码

算法之动态规划(DP)求解完全背包问题 算法之动态规划(DP)求解01背包问题 上面这篇文章主要讲解了01背包问题和动态规划算法,如果你不了解动态规划算法,建议先浏览一下这篇文章熟悉一下,因为,本文的算法思想是基于这篇文章的。 1、什么是完全背包问题? **01背包问题:**有一个背包的容积为V,有N个物品,每个物品的体积为v[i],权重为w[i],每个物品只能取1次放入背包中,背包所有物品权重和最大是多少? 完全背包: 有一个背包的容积为V,有N个物品,每个物品的体积为v[i],权重为w[i],每个物品可以取无限次放入背包中,背包所有物品权重和 阅读详情

给大家推荐一个公众号:诗葵1931

里面的诗歌很美

在这里插入图片描述

主要功能:动态规划法解背包问题

#include<stdio.h>  
  
int f[10][100];  
//构造最优矩阵  
void package0_1(int *w,int *v,int n,int c)  
{  
    int i,j;  
    //初始化矩阵  
    for(i=1;i<=n;i++)  
        f[i][0] = 0;  
    for(j=1;j<=c;j++)  
        f[0][j] = 0;      
      
    for(i=1;i<=n;i++)  
    {  
        for(j=1;j<=c;j++)  
        {  
            //当容量够放入第i个物品,并且放入之后的价值要比不放大  
            if(w[i] <= j && f[i-1][j-w[i]] + v[i] > f[i-1][j])  
            {  
                f[i][j] = f[i-1][j-w[i]] + v[i];              
            }else  
                f[i][j] = f[i-1][j];  
        }  
    }     
    printf("最大价值: %d \n",f[n][c]);  
}  
  
//构造最优解  
void getResult(int n,int c,int *res,int *v,int *w)  
{  
    int i,j;  
    j = c;  
    for(i=n;i>=1;i--)  
    {  
        if(f[i][j] != f[i-1][j])  
        {  
            res[i] = 1;  
            j = j - w[i];  
        }  
    }  
}  
  
int main() 
{	printf("物品个数为:5\n"); 
	printf("每个物品的重量:2,2,6,5,4\n");
	printf("每个物品的价值:6,3,5,4,6\n");
	printf("背包能容的重量为:10\n"); 
    int w[6] = {0,2,2,6,5,4};//每个物品的重量  
    int v[6] = {0,6,3,5,4,6};//每个物品的价值  
    int res[5] = {0,0,0,0,0};  
    int n = 5; //物品的个数  
    int c = 10; //背包能容的重量  
    int i,j;  
    package0_1(w,v,n,c);  
    for(i=0;i<=n;i++)  
    {  
        for(j=0;j<=c;j++)  
            printf("%2d ",f[i][j]);  
        printf("\n");  
    }  
    getResult(n,c,res,v,w);  
    printf("放入背包的物品为: \n");  
    for(i=1;i<=n;i++)  
        if(res[i] == 1)  
            printf("%d  ",i);  
}  

我想能看到这里的同学,无外乎两种人:来拷贝代码的人 和 来拷贝代码的人。

但,在拷贝走的时候,你要想清楚一件事,把代码拷走之后有个蛋用,搞明白对你来说才是最重要的。

好了,就酱紫。

老铁,这要是都不赞,说不过去吧!!!

最后对自己说:
你现在所遭遇的每一个不幸,都来自一个不肯努力的曾经。

算法设计与分析 0-1背包问题 动态规划解法【超详细】 0-1背包问题 问题描述 给定i个物品和一个容量为的背包,物品的重量是Wi,其价值为Vi 物品个数为i,背包容量为C。 如何选择装入背包内的物品,使得装入背包中的物品的总价值最大? 其中,每种物品只有全部装入背包或不装入背包两种选择。 物品不能分割,不能重复使用。 动态规划算法思路 首先建立一个数组B[i][c],最上面一行表示背包容量,最左边一列表示物品编号,中间填充的数值表示当当前背包容量为C... 阅读详情

相关推荐

算法实验之贪心策略求解背包问题

1 问题描述 0-1背包问题:给定n种物品和一个背包。物品i的重量是,其价值为,背包的容量为W。应如何选择装入背包的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有2种选择,即装入背包(1)或不装入背包(0)。不能将物品i装入背包多次,也不能只装入部分的物品i。   背包问题:给定n种物品和一个背包。物品i的重量是,其价值为,背包的容量为W。应如何选择装入

hhh_0820的博客 1万+

算法分析:C语言实现动态规划之0-1背包问题

背包问题求解原理: 为了装满背包,我们导出一个递归公式如下,设V[i,j]用来表示从前i项中取出来的装人体积为j的背包的物品的最大价值。这里,i的范围是从О到n,j的范围是从0到C。这样,要寻求的是值 V[n,C]。很清楚,V[o,j]对于所有j的值是0,这是由于背包中什么也没有。另-方面,V[i,0]对于所有i的值为0,因为没有东西可放到为0的背包里。一般情况下,当i和j都大于0时,有下面的结论,它是很容易证明的。 观察结论 1.V[i-1,j]:仅用最优的方法取自的物品去装入体积为j的背包所得到的

Coolstuz的博客 8424

C语言实现01背包问题与动态规划

本文还有配套的精品资源,点击获取 简介:01背包问题是一个典型的计算机算法问题,常用于资源分配和任务调度等领域。它通过动态规划的方法,优化处理重叠子问题和最优子结构的复杂问题,从而提高效率。问题涉及选择若干物品放入背包,在不超过背包容量的前提下,使物品总价值最大。本文通过构建二维数组dp[i][j]来记录最优解,使用C语言进行算法实现,并提供了解决方案的代码框架。 ...

weixin_42263617的博客 929

C语言实现0-1背包问题(详细实现)并且动态实现0-1背包问题

背包问题通俗的说,就是假如你面前有5块金块速分别为a, b, c, d, e,每块金块的重量不同,并且每块金块所带来的价值也不同(注意:这里金块的重量的价值没有特定关系),目前我们有一个背包,只有固定的容量,要解决的问题就是在一定容量的背包面前装哪几块金块才能获取到最大的价值,对于每块金块我们只有拿或者不拿这两种选择,拿为1不拿为0,因此叫做0-1背包问题。下面我们给出思想,以及步骤。

q805370101的博客 2756

CocosCreator视频播放黑屏?手把手教你封装VideoPlayer组件解决Web环境问题

本文针对Cocos Creator在Web环境下视频播放黑屏等常见问题,提供了一套工程化的VideoPlayer组件封装解决方案。文章深入剖析了浏览器自动播放策略、DOM样式隔离等核心挑战,并手把手教你实现一个健壮的管理器,涵盖兼容性处理、性能优化与内存管理,确保视频播放稳定流畅。

plum99的博客 598

手把手教你用CODESYS将旧笔记本改造成软PLC(含证书配置避坑指南)

本文提供了一份详尽的指南,教你如何利用CODESYS平台将闲置旧笔记本改造为一台功能完整的软PLC。内容涵盖从硬件评估、系统实时性优化、软件安装与驱动配置,到关键的证书授权管理避坑指南,旨在帮助自动化工程师和爱好者低成本搭建稳定可靠的学习与开发平台。

weixin_29190573的博客 278

【动态规划】01背包问题——算法设计与分析

介绍了01背包问题,并介绍了蛮力枚举、带备忘递归、动态规划的解决策略。并总结了动态规划求解问题的基本步骤。

友人帐_的博客 3044

Unity物理驱动3D汽车实现:从刚体控制到参数调优

在游戏开发中,刚体物理是实现真实物体运动与交互的核心技术。通过Unity的物理引擎,开发者可以模拟重力、碰撞、摩擦力等物理行为,为游戏世界注入真实感。其技术价值在于能够以符合物理规律的方式驱动游戏对象,避免穿墙、无视惯性等问题,从而提升游戏体验的真实性和沉浸感。这一原理广泛应用于角色控制、车辆模拟、物体破坏等场景。本文以3D小汽车为例,详细解析了如何通过Rigidbody组件施加力与扭矩,并利用C#脚本实现玩家输入逻辑,完成一辆可操控、能碰撞的物理驱动汽车。文中重点探讨了AddForce与角速度控制两种方案

weixin_34380948的博客 499

动态规划」详解背包问题及实践(附C++代码)

背包问题是一个经典的组合优化问题,它可以被抽象为一个把物品放入背包中的过程,以求最终背包中物品价值的最大化。0/1背包问题是一个经典的动态规划问题,指的是有n个物品和一个容量为W的背包,每个物品只能选择装入一次或不装入。在装入背包的物品总重量不能超过W的前提下,选择物品装入背包中,使得背包中物品的总价值最大。

BXA 7322

PR工具timing report中setup time的计算过程

然后去pr工具里报告report_delay_calculation/reportDelayCalculation -from related_pin -to constraint_pin。这里constraint pin就是D pin (D0 D1 D2 D3),related pin就是 CK pin。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 453

YOLOv8改进 | Conv篇 | 利用YOLOv9的GELAN模块替换C2f结构(附轻量化版本 + 高效涨点版本 + 结构图)

本文给大家带来的改进机制是利用2024/02/21号最新发布的YOLOv9其中提出的GELAN模块来改进YOLOv8中的C2f,GELAN融合了CSPNet和ELAN机制同时其中利用到了RepConv在获取更多有效特征的同时在推理时专用单分支结构从而不影响推理速度,同时本文的内容提供了两种版本一种是参数量更低涨点效果略微弱一些的版本(参数量V8n下降80w,计算量为6.1GFLOPs),另一种是参数量稍多一些但是效果要不参数量低的效果要好一些(均为我个人整理),提供两种版本是为了适配不同需求的读者,具体选择

Snu77的博客 7562

动态规划法求解0/1背包问题

一、求解0/1背包问题 1、问题描述 有n个重量分别为{w1,w2,…,wn}的物品,它们的价值分别为{v1,v2,…,vn},给定一个容量为C的背包。 设计从这些物品中选取一部分物品放入该背包的方案,每个物品要么选中要么不选中,要求选中的物品的总重量不能超过背包的容量,求具有最大的价值的装载方案。 2、蛮力法求解 3、证明0/1背包问题满足最优性原理 4、问题分析 (1)第1步 问题结构分...

wmy01234的博客 1万+

【零基础学习CAPL】——CAN报文的发送(CRC——ChecSum值)

本章主要介绍带有CRC值的报文发送一般报文可使用CANoe的IG模块直接发送,但带有CRC值的报文就只能编写脚本进行发送,以下详细讲解在配合Panel面板情况下,如何进行带有循环冗余码的报文进行报文的发送。

LOVE135149的博客 1909

动态规划算法解决背包问题,算法分析与C语言代码实现,时间效率解析

动态规划算法的深度解析,算法思路的讲解,斐波那契数列为引深度理解动态规划法。使用动态规划法解决背包问题,背包问题的问题与类型介绍,算法思路,递推式与初始条件怎么求,时间效率分析,使用C语言解决背包问题,C语言代码实现。

勾栏听曲_0的博客 2537

delphi 调用deepseek r1 api 并流式返回结果

摘要:本文展示了一个使用Delphi调用DeepSeek API的代码示例,包含两种调用方式:一次性获取结果和流式返回结果。代码实现了完整的API请求处理,包括HTTP客户端设置、JSON数据处理和UI界面交互。其中流式调用通过TStreamReader处理服务器发送事件(SSE),实时更新到TRichEdit控件并保持滚动条位置。文章还提到界面美化优化,为Delphi开发者提供了调用AI服务的实用参考方案。(150字)

全粘工程师 489

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

【YOLOv11改进 - 特征融合】DySample :超轻量级且高效的动态上采样器

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1070

0/1背包问题---C++动态规划法

【问题】 给定n种物品和一个背包,物品i(1≤i≤n)的重量是,其价值为,背包容量为,对于每种物品只有两种选择:装入背包或者不装入背包。如何选择装入背包的物品,使得装入背包中物品的总价值最大? 【想法】 首先证明0/1背包问题满足最优性原理。 设是0/1背包问题的最优解,则是下面子问题的最优解: 其中要找到 如若不是子问题最优解,则在子问题必然有一个最优解的前提下,设是上述子问题的一个最优解,则,且。因此,,这说明...

SweeneyH的博客 9247

精雕软件(JDpaint) 5.5 绿色版

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

动态规划法解决0-1背包问题(C++)

1.动态规划法的设计思想:动态规划法将待求解问题分解成若干个相互重叠的子问题,每个子问题对应决策过程的一个阶段,子问题的重叠关系一般表现在对给定问题求解的递推关系,将子问题的的解求解一次并且填入表中,当需要再次求解子问题的时候,可以通过查表获得这个子问题的解而不是再次求解,从而避免大量重复计算,为了达到这个目的,可以通过一个表来记录所有以解决的子问题的解。 2.动态规划法求解的问题的特征:该问题的

黄鸟于飞 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

算法设计与分析实验二:动态规划法求解TSP问题和01背包问题

利用动态规划算法编程求解TSP问题,并进行时间复杂性分析;利用动态规划算法编程求解0-1背包问题,并进行时间复杂性分析。

qq_61996033的博客 4890

深度学习工具包 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")

【愚公系列】软考中级-软件设计师 056-算法设计与分析(动态规划法和贪心法)

动态规划法(Dynamic Programming)和贪心法(Greedy Algorithm)是两种常用的问题求解方法。它们在某些情况下可以互相替代,但在其他情况下则各有优势。动态规划法是一种将大问题拆分成更小的子问题,并将子问题的解存储起来以避免重复计算的方法。它通常用于求解具有重叠子问题和最优子结构性质的问题。动态规划法的基本思想是,通过解决子问题找到问题的最优解,然后将子问题的解合并起来得到原问题的最优解。动态规划法的时间复杂度通常为O(n^2)或更低,但空间复杂度可能较高。

愚公智库 9万+

01背包问题的动态规划算法和回溯算法对比研究

摘 要: 本文介绍了01背包问题和动态规划已经回溯两种算法。并使用两种方法对01背包问题进行求解。关键词: 背包问题; 动态规划算法;回溯算法 目录1 引言2 动态规划算法2.1 动态规划算法思想介绍2.2 动态规划算法求解的基本步骤2.2.1 确定状态表示2.2.2写状态转移方程2.2.3 初始化状态表2.2.4 确定状态表的填写顺序2.2.5确定返回值2.3 算法设计2.4算法实现2.5 案例分析3.回溯算法3.1回溯算法思想介绍3.2回溯算法解题步骤3.

m0_71503225的博客 1463

算法设计-递归法解背包问题 C代码

主要功能:递归法解背包问题 #include&amp;lt;stdio.h&amp;gt; int maxNum[6]; //存放最优解的编号 int maxValue=0; //存放最大价值 int w[6] = {0,2,2,6,5,4};//每个物品的重量,第一个为0,方便角标对应 int v[6] = {0,6,3,5,4,6};//每个物品的价值,第一个为0,方便角标对应 i...

springhammer的博客 766

【动态规划】01背包问题

【动态规划】01背包问题

一个专注于客户端开发的技术er,不定期更新Android,Flutter,HormonyOS等方向的使用心得和感悟 6839

0-1背包问题(动态规划)C语言实现

给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大?在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或者不装入背包。不能将物品i装入背包多次,也不能只装入部分物品i。设计一个动态规划的算法解决此问题。 代码实现如下: #include<stdio.h> const int N = 4; void Knapsack(int v[],int w[],int c,int n,int m......

m0_57443189的博客 7879

0-1背包问题与动态规划的C/C++代码

那一年, 非计算机专业的我听到0-1背包和动态规划, 觉得很高大上, 其实, 动态规划无非就是寻找高中数学中所说的递推公式而已。最近又复习到0-1背包问题和动态规划, 所以打算用代码来玩玩。 0-1背包问题: 一个小偷来出来活动了, 拿了一个背包, 最多可以装50斤的东西的小袋子。 他眼睛一亮, 发现了三件宝贝a, b, c. 其中a重10斤, 价值60元; b重20斤

认知 行动 坚持 3万+

动态规划算法解决01背包问题的优化及分析

观察发现,optp[i][j]只 与optp[i-1][j]和optp[i-1][J—weight[i]]有关,与 optp[k][1](k=1,2,……,i一2,i+l,……由于我们的dp[i][j]的值由optp[i-1][j]和dp[i-1][j-Vi]两个位置的状态值确定,两点在d[x][y]的上方或者忧伤,所以填表顺序从上往下填写。(有三件物品),三个物品的重量为{20,15,10},三个物品的价值为{20,30,25},对于一个最大承重为25的背包,求包中物品的组合最大的价值是多少?

m0_71503225的博客 1647
上一篇: 算法设计-动态规划法解最长公共子序列问题 C代码
下一篇: 算法设计-递归法解背包问题 C代码
Young_and_Cold
博客等级 码龄9年 180粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值