01背包与完全背包的区分
区别:
- 01背包同个物品只能选1个,完全背包同个物品可以选大于等于0个。
- 01背包优化版的 j 从 m->v[i] 会只使用一次 v[i] ,而完全背包优化版的 j 从 v[i] -> m 可以反复使用 v[i]( f[m] 可能会使用到 f[v[i]] 的值,这就相当于 f[m] 又装入了一次i物品)。
思想:01背包为自上而下(逆序遍历),完全背包为自底向上(正序遍历)。
01背包可以求最大值,也可以求最小值。
例题目录
01背包求最大值
完全背包
01背包求最大值
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。
第 i 件物品的体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。
输入格式
第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。
接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。
输出格式
输出一个整数,表示最大价值。
数据范围
0<N,V≤10000<N,V≤1000
0<vi,wi≤10000<vi,wi≤1000
输入样例
4 5
1 2
2 4
3 4
4 5
输出样例:
8
#include<stdio.h>
#define max(a,b) (a)>(b)?(a):(b)
const int N=1010;
int f[N];
int main(){int n,m;int v[N],w[N];scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d%d",&v[i],&w[i]);for(int i=1;i<=n;i++){for(int j=m;j>=v[i];j--){f[j]=max(f[j],f[j-v[i]]+w[i]);}}printf("%d",f[m]);return 0;
}
完全背包
有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。
第 i 种物品的体积是 vi,价值是 wi。
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。
输入格式
第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。
接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。
输出格式
输出一个整数,表示最大价值。
数据范围
0<N,V≤10000<N,V≤1000
0<vi,wi≤10000<vi,wi≤1000
输入样例
4 5
1 2
2 4
3 4
4 5
输出样例:
10
#include<stdio.h>
#include<iostream>
using namespace std;
const int N=1010;
int f[N];
int v[N],w[N];
int main(){int n,m;cin>>n>>m;for(int i=1;i<=n;i++) cin>>v[i]>>w[i];for(int i=1;i<=n;i++)for(int j=v[i];j<=m;j++)f[j]=max(f[j],f[j-v[i]]+w[i]); //从m到v[i]会只使用一次v[i] ,而从v[i]到m可以反复使用v[i]cout<<f[m]; return 0;
}
01背包与完全背包的区分相关推荐
- 01背包输出路径、完全背包、多重背包
背包问题 一.01 Knapsack(输出路径- >选的物品) 二.完全背包 1.三重循环,极可能TLE,滚动数组优化后j逆向枚举 2.二重,优化消去变量k(没有特别厘清,但可以直接从完全背包角 ...
- hdu 3732(01背包转多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3732 思路:这么大的数据,用01背包肯定会TLE的,01背包转多重背包..最多也就11*11=121件 ...
- 背包问题教程-01背包,完全背包,多重背包,混合背包 收藏
P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...
- 01背包、完全背包、多重背包问题的C++实现及路径记录
这里主要实现路径记录,只求最值问题移步 01背包.完全背包.多重背包问题的C++实现 以下均打印输出路径,即装入背包的物品序号,和最大值. 01背包问题 #include <iostream&g ...
- 01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包,背包问题求方案数
1 01背包问题 有 NNN 件物品和一个容量是 VVV 的背包.每件物品只能使用 一次. 第 iii 件物品的体积是 viv_ivi,价值是 wiw_iwi.求解将哪些物品装入背包,可使这些物品 ...
- 01背包和完全背包 的完整讲解版 包含 一维数组实现 和二维数组实现题目
(二)01背包和完全背包 的完整讲解版 包含 一维数组实现 和二维数组实现题目 //有N件物品和一个容量为V的背包.第i件物品的体积是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. ...
- 01背包, 完全背包,多重背包
优秀博文01背包https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html 背包问题泛指以下这一种问题: 给定一组有固定价值和固定重量的 ...
- 背包问题(01背包,完全背包,多重背包(朴素算法二进制优化))
写在前面:我是一只蒟蒻~~~ 今天我们要讲讲动态规划中~~最最最最最~~~~简单~~的背包问题 1. 首先,我们先介绍一下 01背包 大家先看一下这道01背包的问题 题目 有m件物品和一个容 ...
- 01背包、完全背包(异同)
背包问题 01背包 例题和状态转移方程 二维解法 一维解法 完全背包 例题和状态转移方程 二维解法 一维解法 01背包和完全背包的异同 01背包问题和完全背包问题的差别在于:01背包的每个物品只有一个 ...
- 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包
动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...
最新文章
- 部门内 IDEA 分享,超实用技巧!
- 剑指offer18.删除链表结点(添加dummy,next域结点指向head)
- 动态配置页面 之 组件系统
- oracle rman catalogo,ORACLE 11g RMAN备份恢复--catalog
- 在moss页面出错时,显示详细的错误信息.
- (转载)DevExpress ASPxGridView 使用文档一:概述
- hadoop hive安装手记(转)
- 相机标定之4个坐标系之间的变换关系
- 两数之和——双指针法
- activity(流程引擎)从零入门到实战学习
- robo3t 连接服务器数据库_mongodb开启公共IP访问及Robo 3T连接远程mongodb服务器
- 要想拿到字节50k*16薪,你还需要做什么?
- 服务器可以显示的血量显示,魔兽世界怀旧服怪物如何显示血量
- 大学生活没钱你会学习还是打工? C2 翻译有感
- 离散数学 习题篇——生成主范式
- 基于LabVIEW 2018开发的自动化测试系统源码,该系统模仿TestStand编写
- 支付宝接口对接指南(二、对接框架基础搭建 springboot+支付宝SDK)【保姆级】
- python协程多线程HTMLParser下载mp3
- 计算机组装方案i5,3000元预算方案i5 8400/GTX1050Ti装配配置清单推荐
- KiCad 5.1.6 泪滴插件安装与使用
热门文章
- MYSQL 千万数据速度以及极限测试InnoDb--INSERT 拼接极限(一)
- 数学分析公式LaTex练习-洛必达法则
- 神经网络入门教程,现代神经网络教程
- 小白也能写前端?推荐一款超实用的app----JsHD调试器,助你写出炫酷的网页!
- php notempty 标签,php – AllowEmpty vs NotEmpty
- python定义一个字符串数组赋值_Python ctypes:传递一个字符串数组
- 日记侠:你真的想知道引流的方法吗?
- c语言中左移和乘法谁高级,C程序员说使用移位运算代替乘法和除法更有效,是真的吗?...
- arcgis怎么关联excel表_ArcGIS如何将表连接到空间数据上
- JavaScript 各声明var、let、const方式区别『详解』