一:题目

给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。

输入格式:
共有n+1行输入: 第一行为n值和c值,表示n件物品和背包容量c; 接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。

输出格式:
输出装入背包中物品的最大总价值。

输入样例:
在这里给出一组输入。例如:

5 10
2 6
2 3
6 5
5 4
4 6

结尾无空行
输出样例:
在这里给出相应的输出。例如:

15

二:思路:

思路:关于如何判断是动态 规划,我个人的理解是
如果所求取的结果是(根据某种规则)跳跃性的挑选数据 那么可以判断为动态规划
本题思路来源 依然是 《算法图解》一书
将背包的容量从1开始展开(设为列),将物品按行展开(设为行),
用二维数组存储 不同容量下的最大价值,每一行只能算上本行和前面的行的物品,二维数组就是网格化的,将一个大问题分解成小问题,

  那么其本质就是(递推方程):(规定容量的基础上)上一个单元格的最大价值 VS(当前商品的价值+剩余容量所存储的价值)

三:来兄弟干了这杯代码

/*思路:关于如何判断是动态 规划,我个人的理解是如果所求取的结果是(根据某种规则)跳跃性的挑选数据 那么可以判断为动态规划本题思路来源 依然是 《算法图解》一书 将背包的容量从1开始展开(设为列),将物品按行展开(设为行),用二维数组存储 不同容量下的最大价值,每一行只能算上本行和前面的行的物品那么其本质就是(递推方程):(规定容量的基础上)上一个单元格的最大价值 VS(当前商品的价值+剩余容量所存储的价值) */#include<bits/stdc++.h>
using namespace std;int main(){int n,c;vector<int>v1,v2;//用v1来存重量,v2来存价值 cin >> n >> c;int MaxVule[n+1][c+1];//物品件为行,背包容量为列(1,2,...c) //将vector容器当中的0为位置占住(因为在二维数组中是从下标为1的开始的)int a1 = 1,a2 = 2;v1.push_back(a1);v2.push_back(a2); for(int i = 1; i <= n; i++){int num1,num2;cin >> num1 >> num2;v1.push_back(num1);v2.push_back(num2);} //二维数组初始化for(int i = 0; i < n+1; i++){for(int j = 0; j < c+1; j++){MaxVule[i][j] = 0;}} //   for(int i = 1; i <= n; i++)
//      cout << v1[i] << ' '; //创建的网格中开始更新数据for(int i = 1; i < n+1; i++){for(int j = 1; j < c+1; j++){if(i == 1){if(v1[i] <= j){MaxVule[i][j] = v2[i];   }}else{//比较上一个单元格的价值 如果比其大就更新//计算本单元格的价值 = 商品的价值 + 剩余空间的价值int value = j - v1[i];if(value >= 0) {int temp = v2[i] + MaxVule[i-1][value];//注意i-1 因为本行已经装进商品了不可重复装入 if(MaxVule[i-1][j] < temp){MaxVule[i][j] = temp;}else{MaxVule[i][j] = MaxVule[i-1][j];}  }else{//若商品重量大于 j,则直接继承上一个单元格 MaxVule[i][j] = MaxVule[i-1][j]; }}}} // for(int i = 1; i <= 3; i++){//      for(int j = 1; j <= 4; j++){//
//          cout << MaxVule[i][j] << ' ';
//      }
//      cout << endl;
//  }cout << MaxVule[n][c]; } //5 10
//2 6
//2 3
//6 5
//5 4
//4 6//3 4
//1 1500
//4 3000
//3 2000

四:知识速递(如果对本题的vector容器不熟悉的可以学一下哈)

vector的基本用法

加油!陌生的你,You are the best boy!!!

7-6 0-1背包 (20 分)(思路加详解+网格做法+动态规划)Come Baby !!!!!!!!!!!!!!相关推荐

  1. 7-2 一元多项式的乘法与加法运算 (20 分)(思路加详解+map做法)map真香啊 各个测试点的用例子 来吧宝贝!

    一:题目 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数).数字间以 ...

  2. 7-52 两个有序链表序列的交集 (20 分)(思路加详解尾插法)come Boby!

    一:题目 已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3. 输入格式: 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列) ...

  3. 7-48 银行排队问题之单窗口“夹塞”版 (30 分)(思路和详解+map做法)来呀Baby!

    一:题目 排队"夹塞"是引起大家强烈不满的行为,但是这种现象时常存在.在银行的单窗口排队问题中,假设银行只有1个窗口提供服务,所有顾客按到达时间排成一条长龙.当窗口空闲时,下一位顾 ...

  4. 7-35 城市间紧急救援 (25 分)(思路加详解)

    一:题目 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上.当其他城 ...

  5. 7-42 整型关键字的散列映射 (25 分)(思路加详解)兄弟们 来呀 写题呀

    一:题目 给定一系列整型关键字和素数P,用除留余数法定义的散列函数H(Key)=Key将关键字映射到长度为P的散列表中.用线性探测法解决冲突. 输入格式: 输入第一行首先给出两个正整数N(≤1000) ...

  6. 7-44 基于词频的文件相似度 (30 分)(思路加详解+set容器简便做法)兄弟们冲呀呀呀呀呀 今天你AC了吗

    一:题目 实现一种简单原始的文件相似度计算,即以两文件的公共词汇占总词汇的比例来定义相似度.为简化问题,这里不考虑中文(因为分词太难了),只考虑长度不小于3.且不超过10的英文单词,长度超过10的只考 ...

  7. 7-3 树的同构 (25 分)(思路加详解)来呀baby!!!!!!!!

    一:题目 7-3 树的同构 (25 分) 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把 ...

  8. 7-3 棋盘覆盖 (10 分)(思路加详解)Come baby

    一:题目: 输入格式: 输入三个数,分别是aa,bb,length. 输出格式: 输出整个棋盘.其中特殊方格填为0,然后铺棋盘的顺序为:先铺四个子棋盘交界的部分,然后递归的对每个子棋盘按照左上,右上, ...

  9. 7-53 两个有序序列的中位数 (25 分)(思路加详解)用STL容器中的set容器的自动去重过不去

    一:题目 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A 0 ​ ,A 1 ​ ,⋯,A N−1 ​ 的中位数指A (N−1)/2 ​ 的值,即第⌊(N+1)/ ...

最新文章

  1. IdentityServer4关于多客户端和API的最佳实践【含多类型客户端和API资源,以及客户端分组实践】【中】...
  2. MyBatis 环境搭建
  3. 对于随机变量的标准差standard deviation、样本标准差sample standard deviation、标准误差standard error的解释...
  4. 分布式调用跟踪系统的设计和应用
  5. mAP(mean Average Precision)应用(转)
  6. java届的黄埔军校_法学界的“黄埔军校”:拒绝与985合并,是其最大遗憾
  7. 谷歌大脑AI飞速解锁雅达利,训练不用两小时:预测能力“前所未有”
  8. 《统计学习方法》——感知机
  9. continue语句只用于循环语句中_流程控制(跳转语句)
  10. 易语言手游辅助开发教程
  11. 工作也能用 Tinder 配对?一家叫 Palaround 的公司就在做这门生意
  12. 阿里P9首次公开:阿里面试官都问些什么?
  13. 编程序,用getchar函数读人两个字符给c1和c2,然后分别用
  14. 编程老手的哪些特点,是值得新手程序员学习的?
  15. 批处理删除指定名称的打印机
  16. 网页数据获取小技巧(小白)
  17. 逻辑地址与物理地址的转换
  18. YOLOv4论文中文翻译
  19. DSM -- 进入linux文件系统
  20. RESTful风格的springMVC

热门文章

  1. vue-router和react-router嵌套路由layout配置方案的区别
  2. thinkphp出现Call to undefined function Think\C() in ... online 313
  3. sybase 连接mysql_如何连接到Sybase SQL Anywhere数据库
  4. Android Studio开发基础之自定义View组件
  5. Failed:(13: Permission denied)导致访问浏览器出现Nginx 500 Internal Server Error
  6. Android之点击图片底部出现灰色圆圈效果
  7. Android之解决多语言适配部分TextView内容左对齐和内容一行不排满就到第二行问题
  8. Android之自定义View实现带4圆角或者2圆角的效果
  9. (一)python3 只需3小时带你轻松入门—— 编程尝试
  10. java程序 开发工具_15款Java程序员必备的开发工具