3. 完全背包问题

  • 题目
  • 提交记录
  • 讨论
  • 题解
  • 视频讲解

有 NN 种物品和一个容量是 VV 的背包,每种物品都有无限件可用。

第 ii 种物品的体积是 vivi,价值是 wiwi。

求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。
输出最大价值。

输入格式

第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。

接下来有 NN 行,每行两个整数 vi,wivi,wi,用空格隔开,分别表示第 ii 种物品的体积和价值。

输出格式

输出一个整数,表示最大价值。

数据范围

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

完全背包问题与01背包问题是不一样的,对于01背包,每个物品只有两个选择,不要,或者拿一个,因此对于dp[i][j](在容量为J时,拿第I个物品时的总价值)它的最大值要不是dp[i-1][j],不拿,要不就是dp[i][j-v[i]]+w[i]],拿

但是对于完全背包,并不是这么简单它可以拿很多个因此它的状态转移方程是

dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]+w[i],dp[i-1][j-2*v[i]]+2*w[i]]......dp[i-1][j-k*v[i]]+k*w[i])只要J能够满足容量,而我们可得到另一个数组的公式

dp[i][j-v]=max(dp[i-1][j-v],dp[i-1][j-2*v]+w[i]......)  它与上述公式max判断的第二位仅仅差一个w,所以max的第二位可以转化为

dp[i][j-v]+w[i];这样就可以得到简化的状态转移方程,那么完全背包就很容易写出来来了

我写的完全背包还没有优化数组,就是二维优化为一维,但是也不是很难了,

#include<bits/stdc++.h>
using namespace std;
int w[10001],v[10001];
int dp[10010][10010];
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=0;j<=m;j++){dp[i][j]=dp[i-1][j];if(j>=v[i])dp[i][j]=max(dp[i][j],dp[i][j-v[i]]+w[i]);}}cout<<dp[n][m];
}

完全背包问题(动态规划)相关推荐

  1. 01背包问题 动态规划 java实现 简单通俗易懂

    ** 01背包问题 动态规划 ** 1.动态规划 什么是动态规划?动态规划就是将一个大问题不断向下拆分成小问题,直到拆分出的小问题可以求出其解,然后将小问题的解不断的向上合并,最终得到大问题的解决方案 ...

  2. 01背包问题动态规划(二维数组)

    01背包问题动态规划(二维数组) 问题描述 ​ 一个旅行者有一个最多能装 M 公斤的背包,现在有 n 件物品,它们的重量分别是W1,W2,-,Wn,它们的价值分别为C1,C2,-,Cn,求旅行者能获得 ...

  3. 0-1背包问题动态规划模型的Python解法

    0-1背包问题动态规划模型的Python解法 1.01背包问题 2.Python解决方案 3.01背包问题例题 1.01背包问题 背包问题(Knapsack problem)是一种组合优化的NP完全问 ...

  4. 0/1背包问题——动态规划、回溯、分支限界法对比

    0/1背包问题--动态规划.回溯.分支限界法对比 2017.12.19 20:42:02 字数 3713 阅读 2820 目录 1.问题描述 1.1 问题描述 1.2 问题的数学表示(规划类问题,此种 ...

  5. 背包问题-动态规划java实现代码

    背包问题-动态规划 目录 背包问题-动态规划 一.动态规划的原理 二.分析与代码实现 1.分析 2.代码分析 一.动态规划的原理 动态规划(dynamic programming)是运筹学的一个分支, ...

  6. 背包问题动态规划matlab,01背包问题动态规划详解

    计算机算法分析考试:动态规划0-1背包问题,怎么算她说她没醉,却一直摇摇晃晃掉眼泪:你说你爱她,却从未想过给她一个家. 要考试了,老师给划重点有一题:动态规划0-1背包问题,怎么算. 怎么理问题描述: ...

  7. 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析

    // 利用动态规划解决0-1背包问题 using System; using System.Collections.Generic; using System.Linq; using System.T ...

  8. 0/1背包问题——动态规划方法

    1.定义 动态规划:把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解. 2.求解步骤 (1)找到状态转化条件 (2)归纳状态转移方程 (3)定义初始条件值 3.实例解析--0/1背包 ...

  9. 算法设计与分析 0-1背包问题 动态规划解法【超详细】

    0-1背包问题 问题描述 给定i个物品和一个容量为的背包,物品的重量是Wi,其价值为Vi 物品个数为i,背包容量为C. 如何选择装入背包内的物品,使得装入背包中的物品的总价值最大? 其中,每种物品只有 ...

  10. 01背包问题—动态规划求解

    动态规划 01 背包问题 关键代码 for (int i = 1; i <= n; ++i){for (int j = 0; j <= c; ++j){if (j < w[i]) / ...

最新文章

  1. python对文件的读操作方法有哪些-python--文件的读写操作
  2. IOS开发基础之时钟的实现
  3. 这 10 个云计算错误,会让你的业务一蹶不振!
  4. 行!人工智能玩大了!程序员:太牛!你怎么看?
  5. 摄像头大数据分析跟踪均值漂移算法-spark和python
  6. 多线程 空值线程数_跳槽涨薪季面试题之多线程(三)
  7. 2022年ADB 命令知多少?一文2000字详细 ADB 命令大全来啦
  8. xlsx xlsx-style 设置导出的exce表格样式
  9. python3 numpy教程_Python Numpy 教程
  10. 小米android安装包下载安装,小米应用商店安装包下载
  11. 华为云虚拟服务器怎么搭建,云服务器怎么搭建虚拟主机
  12. css创始人层叠样式表,CSS层叠样式表
  13. javafx 教程_集成JavaFX和Swing
  14. PHP自学no00001第一个php程序
  15. 家务计算机配置,笔记本电脑佳配置是什么样的
  16. 故宫元宵节首开夜场,票务系统HTTPS加密护航 1
  17. 用C语言写羊了个羊(一)
  18. mysql 统计不同成绩阶段的人数
  19. LDO和BUCK降压稳压器对比
  20. vivo Z3i的usb调试模式在哪里,开启vivo Z3iusb调试模式的教程

热门文章

  1. Android自定义底部弹出窗-dialog(2种实现分析+源码)
  2. Angular应用的文档生成工具——Compodoc
  3. fiddler工作原理
  4. ROS教程一续——Catkin Workspace (Catkin工作区)
  5. 模拟QQ音乐微信登录界面
  6. 四、Ansible文件模块库与模板
  7. Android 7.0 行为变更
  8. nodejs crud功能(orm 七牛 mysql..)
  9. excel求指数最大回撤
  10. 路由器发展编年史 发展篇