区别:

  1. 01背包同个物品只能选1个,完全背包同个物品可以选大于等于0个。
  2. 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背包与完全背包的区分相关推荐

  1. 01背包输出路径、完全背包、多重背包

    背包问题 一.01 Knapsack(输出路径- >选的物品) 二.完全背包 1.三重循环,极可能TLE,滚动数组优化后j逆向枚举 2.二重,优化消去变量k(没有特别厘清,但可以直接从完全背包角 ...

  2. hdu 3732(01背包转多重背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3732 思路:这么大的数据,用01背包肯定会TLE的,01背包转多重背包..最多也就11*11=121件 ...

  3. 背包问题教程-01背包,完全背包,多重背包,混合背包 收藏

    P01: 01背包问题 题目 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. 基本思路 这是最基础的背包问题,特点是:每种物品仅有 ...

  4. 01背包、完全背包、多重背包问题的C++实现及路径记录

    这里主要实现路径记录,只求最值问题移步 01背包.完全背包.多重背包问题的C++实现 以下均打印输出路径,即装入背包的物品序号,和最大值. 01背包问题 #include <iostream&g ...

  5. 01背包,完全背包,多重背包,混合背包,二维费用背包,分组背包,背包问题求方案数

    1 01背包问题 有 NNN 件物品和一个容量是 VVV 的背包.每件物品只能使用 一次. 第 iii 件物品的体积是 viv_ivi​,价值是 wiw_iwi​.求解将哪些物品装入背包,可使这些物品 ...

  6. 01背包和完全背包 的完整讲解版 包含 一维数组实现 和二维数组实现题目

    (二)01背包和完全背包 的完整讲解版 包含 一维数组实现 和二维数组实现题目 //有N件物品和一个容量为V的背包.第i件物品的体积是c[i],价值是w[i].求解将哪些物品装入背包可使价值总和最大. ...

  7. 01背包, 完全背包,多重背包

    优秀博文01背包https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html 背包问题泛指以下这一种问题: 给定一组有固定价值和固定重量的 ...

  8. 背包问题(01背包,完全背包,多重背包(朴素算法二进制优化))

    写在前面:我是一只蒟蒻~~~ 今天我们要讲讲动态规划中~~最最最最最~~~~简单~~的背包问题 1. 首先,我们先介绍一下  01背包 大家先看一下这道01背包的问题   题目   有m件物品和一个容 ...

  9. 01背包、完全背包(异同)

    背包问题 01背包 例题和状态转移方程 二维解法 一维解法 完全背包 例题和状态转移方程 二维解法 一维解法 01背包和完全背包的异同 01背包问题和完全背包问题的差别在于:01背包的每个物品只有一个 ...

  10. 动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包,混合背包

    动态规划dp(带模板题の超易懂版):01背包,完全背包,分组背包,多重背包 01背包 && 完全背包 && 分组背包 の 视频教程:https://www.bilibi ...

最新文章

  1. 部门内 IDEA 分享,超实用技巧!
  2. 剑指offer18.删除链表结点(添加dummy,next域结点指向head)
  3. 动态配置页面 之 组件系统
  4. oracle rman catalogo,ORACLE 11g RMAN备份恢复--catalog
  5. 在moss页面出错时,显示详细的错误信息.
  6. (转载)DevExpress ASPxGridView 使用文档一:概述
  7. hadoop hive安装手记(转)
  8. 相机标定之4个坐标系之间的变换关系
  9. 两数之和——双指针法
  10. activity(流程引擎)从零入门到实战学习
  11. robo3t 连接服务器数据库_mongodb开启公共IP访问及Robo 3T连接远程mongodb服务器
  12. 要想拿到字节50k*16薪,你还需要做什么?
  13. 服务器可以显示的血量显示,魔兽世界怀旧服怪物如何显示血量
  14. 大学生活没钱你会学习还是打工? C2 翻译有感
  15. 离散数学 习题篇——生成主范式
  16. 基于LabVIEW 2018开发的自动化测试系统源码,该系统模仿TestStand编写
  17. 支付宝接口对接指南(二、对接框架基础搭建 springboot+支付宝SDK)【保姆级】
  18. python协程多线程HTMLParser下载mp3
  19. 计算机组装方案i5,3000元预算方案i5 8400/GTX1050Ti装配配置清单推荐
  20. KiCad 5.1.6 泪滴插件安装与使用

热门文章

  1. MYSQL 千万数据速度以及极限测试InnoDb--INSERT 拼接极限(一)
  2. 数学分析公式LaTex练习-洛必达法则
  3. 神经网络入门教程,现代神经网络教程
  4. 小白也能写前端?推荐一款超实用的app----JsHD调试器,助你写出炫酷的网页!
  5. php notempty 标签,php – AllowEmpty vs NotEmpty
  6. python定义一个字符串数组赋值_Python ctypes:传递一个字符串数组
  7. 日记侠:你真的想知道引流的方法吗?
  8. c语言中左移和乘法谁高级,C程序员说使用移位运算代替乘法和除法更有效,是真的吗?...
  9. arcgis怎么关联excel表_ArcGIS如何将表连接到空间数据上
  10. JavaScript 各声明var、let、const方式区别『详解』