【动态规划】背包问题1

动态规划 之 0-1背包问题 关于背包问题,其实可以分为两种类型:0-1背包问题 和 部分背包问题。 1、先通过一个例子来说明一下二者的区别吧! 有一个窃贼在偷窃一家商店时发现有n件物品,第i件物品价值为vi元,重量为wi,假设vi和wi都为整数。他希望带走的东西越值钱越好,但他的背包中之多只能装下W磅的东西,W为一整数。他应该带走哪几样东西? 0-1背包问题:每件物品或被带走,或被留下,(需要做出0-1选择)。小偷 阅读详情

题目描述

有个背包可承受重量N,现有T件物品
每件物品重量为Wi,价值为Vi ,每件物品只有一个,
这个背包可以装载物品的最大价值是多少?

输入

一行,N T 之间用空格隔开
后面t行,每行:重量Wi,价值Vi

输出

这个背包可以装载物品的最大价值

样例输入

100 5
77 92
22 22
29 87
50 46
99 90
 

样例输出

133

01背包,原基础上加记忆化就OK了

f[i][j]:

i表示第i个物品

j表示重量为j

总的表示最大价值

上代码

#include <bits/stdc++.h>
using namespace std;
int n, t, a[1001],b[1001],f[1001][1001], ans,m;

void dg(int wi, int mon, int step)
{
	if(step>n)
	{
		ans=max(ans,mon);
		return ;
	}
	else
	{
		if(wi+a[step]<=m)
		if(mon+b[step]>f[step][wi+a[step]])
		{
			f[step][wi+a[step]]=mon+b[step];
			dg(wi+a[step],mon+b[step],step+1);
		}
		if(mon>=f[step][wi])
		{
			f[step][wi]=mon;
			dg(wi,mon,step+1);
		}
	}
}

main()
{
	freopen("beibao1.in","r",stdin);
	freopen("beibao1.out","w",stdout);
	scanf("%d%d", &m, &n);
	for (int i = 1; i <= n; i++)
		{
			scanf("%d%d", &a[i], &b[i]);
		}
	dg(0, 0, 1);
	printf("%d", ans);
}

待会发背包2

0019算法笔记——【动态规划】0-1背包问题 1、问题描述:      给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问:应如何选择装入背包的物品,使得装入背包中物品的总价值最大?      形式化描述:给定c >0, wi >0, vi >0 , 1≤i≤n.要求找一n元向量(x1,x2,…,xn,), xi∈{0,1}, ∋ ∑ wi xi≤c,且∑ vi xi达最大.即一个特殊的整数规划问题。 阅读详情

相关推荐

动态规划法如何来解决0-1背包问题

1、0-1背包问题。设有n个物品他们的重量和价值分别存放在数组w[]和v[]中,背包的容量存放在全局变量C中,和最终的n个物品是否装入情况存放在数组x[n]中。 2、int KnapSack(int w[],int v[],int x[],int n)函数功能是返回能装载的最大价值。并且第i个物品能否装入背包存放在数组元素x[i]中,它为1(非0)表示该物品可以装入,为0表示该物品不装入。 3、写主函数main(),实现输入数组w[]和v[],调用KnapSack函数,并输出装入物品的编号。 (1)解题思路

JobinXin的博客 3332

【c++入门(2)】完全背包

一、完全背包 题目描述: 题目描述 有个背包可承受重量T,现有N件物品,每件物品重量为Wi,价值为Vi ,每件物品的数量是无穷的,这个背包可以装载物品的最大价值是多少? 输入格式 第一行,两个整数,分别表示T和N,用空格隔开(T≤1000,N≤100) 接下来T行,每行两个整数,分别表示N件物品的重量Wi和价值Vi(1≤Wi,Vi≤100) 输出格式 一行,表示这个背包可以装载物品的最大价值 输入输出样列 输入样例1: 100 5 77 92 22 22 29 87 50 46...

1 4176

算法——动态规划之0-1背包问题

打算每天复习一点算法内容,就先从动态规划下手。曾经动态规划让我头疼,重新学了一下觉得还好啦不是很难,实现动态规划算法的核心在于实现它的递推公式,写出递推公式,代码也就很容易了。动态规划类似分治法,都是将一个大问题分解为一个个小问题,分而治之。不同之处在于,动态规划记忆了重复的子问题,避免了运算过程中的重复计算。适用情况:有重叠子问题和最优子结构性质(动态规划每一步求的都是最优解)的问题。下面我们通...

Astar的博客 1万+

【算法与数据结构】—— 动态规划之背包问题

背包问题分为多种,其中最常见的主要是三类:01背包、完全背包、多重背包。这里面最经典的是01背包问题,它基本上已经成为了事实上的动态规划入门级必学算法。下面,我们将对上述的三类背包问题逐个分析。

酱懵静的博客 2万+

VC++实现动态规划解决0-1背包问题

本文还有配套的精品资源,点击获取 简介:0-1背包问题是一种需要在有限背包容量下,通过选择物品组合来获得最大价值的组合优化问题。本文详细介绍了使用VC++面向对象编程语言,通过动态规划方法实现0-1背包问题的过程。动态规划通过构建一个二维数组来避免重复计算,并给出了解决方案的算法实现与优化建议。 1. 0-1背包问题概述 0-1背包问题是一种典型的组合优化问题,...

weixin_42613360的博客 1048

FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统

FreeSwitch采用mrcp协议对接科大讯飞asr和tts对接过程

shanghaimoon的专栏 8839

c++背包九讲之背包问题求方案数

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

weixin_42579072的博客 3224

STM32H743IIT6上LVGL移植实战:从零到触摸屏驱动的完整配置流程

本文详细记录了在STM32H743IIT6高性能MCU上,从零开始移植LVGL图形库到7寸RGB触摸屏的完整实战流程。内容涵盖工程搭建、显示与触摸驱动配置、LVGL核心优化及常见问题排查,重点讲解了如何利用STM32H743的硬件特性(如DMA2D、LTDC)提升GUI性能,为嵌入式GUI开发提供了一份详实的配置指南。

spark7igniter的博客 549

Yolov8轻量级网络:Ghostnet、G_ghost、Ghostnetv2家族大作战(一):华为Ghostnet,超越谷歌MobileNet | CVPR2020

Yolov8引入轻量级网络Ghostnet、G_ghost、Ghostnetv2等,减少最新的深度神经网络的计算成本,引入高效的神经网络结构。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 2566

背包问题

背包问题 给定一个载重量为M的背包,考虑n个物品,其中第i个物品的重量 wi ,价值vi (1≤i≤n),要求把物品装满背包,且使背包内的物品价值最大。 当作0-1背包问题,用动态规划算法,获得最优值220; 当作0-1背包问题,用贪心算法,按性价比从高到底顺序选取物品,获得最优值160。由于物品不可分割,剩下的空间白白浪费。 当作背包问题,用贪心算法,按性价比从高到底的顺序选取物品,获得最优值2...

jingyu_Alice的博客 381

openbmc mctp i3c适配步骤

本文介绍了在Intel OKS平台下,BMC作为I3C从设备如何适配MCTP over I3C的实现方法。主要内容包括:1)关键术语解释,如MDB(Mandatory Data Byte)值为0xAE,DCR(Device Characteristics Register)和BCR(Bus Characteristics Register)的设置;2)适配流程说明,包括BMC作为控制器主节点分配地址后成为MCTP端点,CPU作为总线所有者的角色转换;3)测试验证步骤,展示通过mctp-client工具发送指

wit_yuan的专栏 132

动态规划解0-1背包问题

动态规划解0-1背包问题 动态规划解0-1背包问题是一个十分典型案例,我从网上查询好多相关资料,但是大部分都深奥难懂,并不适合初学算法的小白,其中涉及的递推关系式、填表,以及最后的二维表简化为一维表的优化过程,好多都是一笔带过,所以,今天就尽我所能,来叙述一下对于0-1背包问题使用动态规划来求解。 要解决0-1背包问题,首先咱们要解决的是什么是动态规划。 动态规划 先说一说什么是动态规划。 动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题

weixin_49571787的博客 6432

在树莓派4B上基于NCNN框架部署YOLOv8的实战教程

摘要:本文详细介绍了在树莓派4B上基于NCNN框架部署YOLOv8目标检测模型的完整流程。从PyTorch模型转换为NCNN格式,到树莓派环境配置(OpenCV和NCNN编译),再到C++代码实现与优化,涵盖模型加载、推理和绘图等核心功能。测试结果显示,树莓派4B上可实现约2 FPS的检测速度,Windows平台达6~7 FPS。文章还提供了量化模型、多线程优化等实用建议,并附常见问题解答,为边缘设备部署轻量化目标检测提供了可行方案。(149字)

m0_64661770的博客 595

机器学习笔记——30种常见机器学习算法简要汇总

本笔记介绍机器学习中常见的30种机器学习算法。

haopinglianlian的博客 3195

动态规划-(0-1)背包问题

下面我用容积代表重量(我是不会承认我看走眼了的。又懒得改。)0-1背包问题是动态规划背包问题系列的最基础的一个问题。相对理解起来较为简单。按书上来说,要证明一个问题是否可以使用动态规划思想,需要满足最优子结构的性质,那么什么是最优子结构的性质呢?书上给出的定义如下图看起来很拗口,其实就是不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。说白了就是一个最优策略的子策略也是必须是最优的,而所有子问题的局部最优解将导致整个问题的全局最优。

菜鸟的博客 1万+

YOLOv11【第一章:零基础入门篇·第1节】YOLOv11核心架构深度解析与环境配置,一文搞定!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。 本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 5507

动态规划算法之0-1背包问题

待续。。。 代码实现 package com.zzb.algorithm.dynamic; /** * 动态规划算法 * 应用实例:0-1背包问题(限制每个物品要么拿(1个),要么不拿(0个)) */ public class KnapsackProblem { public static void main(String[] args) { // 每个物品的重量 ...

花开归矣的博客 8030

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

动态规划0—1背包问题

动态规划0-1背包问题 Ø    问题描述:    给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装 入背包中物品的总价值最大? Ø   对于一种物品,要么装入背包,要么不装。所以对于一种物品的装入状态可以取0和1.我们设物品i的装入状态为xi,xi∈ (0,1),此问题称为0-11背包问题。

逐梦科学 16万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

0-1背包问题(动态规划)

动态规划的核心思想就是把一个大问题分解成很多小问题,然后逐个解决这些小问题,最后把这些小问题的解组合起来,就得到了大问题的解。为什么要用动态规划?有些问题直接解决很难,但是分解成小问题就容易多了。很多小问题是重复的,我们可以把这些小问题的解保存起来,避免重复计算。背包问题,就像在玩一个非常有趣的“装箱”游戏!想象一下,你有一个背包,它只能装下一定重量的东西。现在,你面前有一堆玩具,每个玩具都有自己的重量和价值,每个玩具只能装一个。在背包的重量限制下,装下尽可能多的玩具,并且让这些玩具的总价值最高。

m0_74062928的博客 2700

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

黄鸟于飞 1万+

动态规划之0-1背包问题

首先介绍一下动态规划... 设计一个动态规划算法,通常可按照以下几个步骤进行: (1) 找出最优解的性质,并刻画其结构特征。 (2) 递归地定义最优解的值 (3) 以自底而上的方式计算出最优值 (4) 根据计算最优值时得到的信息,构造一个最优解。 对于一个给定的问题,若具有以下两个性质,则可以考虑用动态规划法来求解。 (1) 最优子结构。如果一个问题的最优解中包含了其子问题的最优解,

码农也有梦 4万+

0-1背包问题 【动态规划】

0-1背包问题 求解方法 0-1背包问题解决方法有: 蛮力解法; 动态规划算法; 贪心算法; 回溯解法。 本节主要为动态规划 基本思想: 令表示在前个物品中能够装入容量为的背包中的物品的最大值,则可以得到如下动态函数: 例题 例如,有5个物品,其重量分别是{2,2.6,5,4},价值分别为{6,3,5,4,6},背包的容量为10,动态规划法求解0/1背包问题的过程如图所示,具体过程如下。 代码展示【C++】 #include <iostream> #include<cstdio&

软件程序媛的博客 5789

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

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan 是什么 动态规划(dynamic programming)是求解决策过程最优化的数学方法,把多阶段过程转换为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法。 基本思想 将待求解的问题分解成若干个子问题,先求解子问...

至尊宝 3万+
上一篇: 【USACO题库】1.2.5 Dual Palindromes双重回文数
下一篇: 【动态规划】背包问题2
开朗的坤坤
博客等级 码龄5年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值