题目:/*有n件物品和一个容量为v的背包。第i件物品的体积是V[i],价值是S[i]。求价值总和最大为多少*/

特点:每种物品仅有一件,可以选择放或不放。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
int MAX(int a,int b)
{return a>b?a:b;
}
int main()
{int V[20],S[20],ss[20][20];int v,n;while(~scanf("%d%d",&n,&v)){for(int i=0; i<n; i++)scanf("%d",&V[i]);//体积for(int i=0; i<n; i++)scanf("%d",&S[i]);//花费memset(ss,0,sizeof(ss));//初始化数组for(int i=1; i<n; i++){for(int j=1; j<=v; j++){if(j<V[i])//背包装不下第i个物体,目前只能靠前i-1个物品ss[i][j]=ss[i-1][j];elsess[i][j]=MAX(ss[i-1][j],ss[i-1][j-V[i]]+S[i]);//状态转移方程}}for(int i=1; i<n; i++){for(int j=1; j<=v; j++)printf("%2d ",ss[i][j]);printf("\n");}}return 0;
}

状态转移方程:

ss[i][v]=MAX(ss[i-1][v],ss[i-1][v-V[i]]+S[i]);

ss[i][v]是指在有v体积可用的情况下在前i个物品取的最大价值;

ss[i-1][v]是指在有v体积可用的情况下在在前i-1个物品取的最大价值(即不取第i个物品);

ss[i-1][v-V[i]]是指在 有v-[i]体积可用的情况下 前i-1个物品的最大价值

+S[i]加上i物品的价值(即使v体积可用的情况下取用第i个物品的最大价值)

示例:

6 12

0 1  3  2  6  2

0 2  5  3 10 4

求出在1-v体积的各个体积

取走1-i物品的最大价值

上表中横向(x)为2时,纵向(y)为2时候:可取用1,2,3物品,可用体积为2,这时只能取走1,2,价值为2; j<V[i]的情况

上表中横向(x)为3时,纵向(y)为2时候:可取用1,2,3,4物品,可用体积为2,这时取走1,2,价值为2,取走物品4(价值为3体积为2)找到ss[2][0](取走物品4的情况下剩余空间所能得到的最大价值)+物品的价值大于2,所有是ss[3][2]为3)

ss[i][j]=ss[i-1][j-V[i]]+S[i]  (ss[i-1][j]<ss[i-1][j-V[i]]+S[i])的情况;

背包九讲--01背包相关推荐

  1. 背包九讲--完全背包

    完全背包 [问题描述] 设有n种物品,每种物品有一个重量及一个价值.但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M ...

  2. 背包九讲 ----- 01背包问题模版

    01背包问题 题意 给定N件物品和一个容量为V的背包 每件物品具有价值和体积两个属性,且每件物品选择次数小于等于1 计算出背包所能够存放的最大价值 题解(二维dp) 用 f[i][j]f[i][j]f ...

  3. 背包九讲之一:01背包问题

    文章目录 说明: 01背包问题 题目 基本思路 初始化的细节问题 优化空间复杂度 相关题目练习 题目URL 输入格式 输出格式 数据范围 输入样例 输出样例: 题目解法 说明: 本文所讲内容摘录自崔添 ...

  4. 背包九讲 (蒟蒻版)之01背包

    hello,你们的loony上线啦.你们知道吗?我今天早上起来一看手机,600多人在CSDN上访问过我,当时我心情都要炸了(补充:高兴炸了),因为,这毕竟只是本蒟蒻的梦想嘛~ 好了不嘚瑟啦! 今天就来 ...

  5. 【算法】动态规划+“背包九讲”原理超详细讲解+常见dp问题(9种)总结

    目录 一.动态规划(DP) 二.背包九讲 (1)完全背包 P1616 疯狂的采药(完全背包) (2)01背包 滚动数组 一维数组 P1048 采药(01背包) 01背包表格图示 (3)多重背包 整数拆 ...

  6. dp背包九讲(待补充,暂时前两讲)

    文章目录 背包九讲 一.01背包 二维dp 优化为一维 二.完全背包 二维dp 优化为一维 三.多重背包 数据范围很小时,变成01背包暴力 当数据范围较大时,利用二进制优化 二进制优化还不够用时,利用 ...

  7. 第二讲 完全背包问题(对背包九讲的学习)

    学习自:背包九讲 题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用.第i种物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. ...

  8. 算法--背包九讲(详细讲解+代码)

    背包九讲 目录  第一讲 01背包问题  第二讲 完全背包问题  第三讲 多重背包问题  第四讲 混合三种背包问题  第五讲 二维费用的背包问题  第六讲 分组的背包问题  第七讲 有依赖的背包问题  ...

  9. 完全背包问题python_令人头疼的背包九讲(2)完全背包问题

    重磅干货,第一时间送达 背包问题是一个经典的动态规划模型.它既简单形象容易理解,又在某种程度上能够揭示动态规划的本质,故不少教材都把它作为动态规划部分的第一道例题. 题目 完全背包问题 题目要求 有n ...

  10. dalao的背包九讲

    背包九讲 目录  第一讲 01背包问题  第二讲 完全背包问题  第三讲 多重背包问题  第四讲 混合三种背包问题  第五讲 二维费用的背包问题  第六讲 分组的背包问题  第七讲 有依赖的背包问题  ...

最新文章

  1. Python+OpenCV实现AI人脸识别身份认证系统(2)—人脸数据采集、存储
  2. Zonbu-售价 99 美元的袖珍电脑
  3. 设计模式 — 创建型模式 — 原型模式
  4. 计算机键盘是编码键盘还是非编码键盘,矩阵按键原理图_矩阵按键扫描实例
  5. 白话Elasticsearch39-深入聚合数据分析之案例实战_搜索+聚合: 统计指定品牌下每个颜色的销量
  6. 刘歧:让人生不留遗憾
  7. 路由器获取不到ipv6地址
  8. 带本科生做毕设是什么样的体验,看看学生是怎么评价我的
  9. uniapp上拉加载
  10. 来看看 random_state 这个参数
  11. ajax请求是宏任务还是微任务_ASP.NET Web API基础(04)---异步编程和跨域请求 - 高原秃鹫...
  12. java设计模式 建造模式_java设计模式(三)建造者模式
  13. Mac 更新port卡住怎么办?
  14. EMC——青青子衿,居易安信
  15. Java实现生成和解析二维码
  16. 智能家居服务发现实现
  17. 三个大傻大闹你的脑袋,如何让他们胜过一个诸葛亮?
  18. 预渲染与服务端渲染的区别
  19. 阿里新一代Rank技术
  20. T8000中央空调综合节能智能控制系统 力载波技术 无需布线 高效节能省钱省力 倡导全国应用

热门文章

  1. java operator 重载 ==_运算符重载
  2. php urlencode 大写,HttpUtility.UrlEncode 编码输出的字母替小写,怎样改成大写呢
  3. 2019JAVA中ajax不高亮_2019-01-18 ajax请求时,token死活放不大header中
  4. 云优后台提交显示parsererror_Web测试必备技能——F12定位bug属于前端还是后台
  5. cad直线和圆弧倒角不相切_建议收藏:史上最全CAD快捷键大全
  6. python分析html文件_如何用Python解析HTML?
  7. Spring框架的本质:3了解一点儿JavaConfig
  8. python核心技术实战详解_Python核心技术实战详解
  9. 文件系统 83 linux,Linux文件系统
  10. WordPress目录解析