背包九讲--01背包
题目:/*有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背包相关推荐
- 背包九讲--完全背包
完全背包 [问题描述] 设有n种物品,每种物品有一个重量及一个价值.但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M ...
- 背包九讲 ----- 01背包问题模版
01背包问题 题意 给定N件物品和一个容量为V的背包 每件物品具有价值和体积两个属性,且每件物品选择次数小于等于1 计算出背包所能够存放的最大价值 题解(二维dp) 用 f[i][j]f[i][j]f ...
- 背包九讲之一:01背包问题
文章目录 说明: 01背包问题 题目 基本思路 初始化的细节问题 优化空间复杂度 相关题目练习 题目URL 输入格式 输出格式 数据范围 输入样例 输出样例: 题目解法 说明: 本文所讲内容摘录自崔添 ...
- 背包九讲 (蒟蒻版)之01背包
hello,你们的loony上线啦.你们知道吗?我今天早上起来一看手机,600多人在CSDN上访问过我,当时我心情都要炸了(补充:高兴炸了),因为,这毕竟只是本蒟蒻的梦想嘛~ 好了不嘚瑟啦! 今天就来 ...
- 【算法】动态规划+“背包九讲”原理超详细讲解+常见dp问题(9种)总结
目录 一.动态规划(DP) 二.背包九讲 (1)完全背包 P1616 疯狂的采药(完全背包) (2)01背包 滚动数组 一维数组 P1048 采药(01背包) 01背包表格图示 (3)多重背包 整数拆 ...
- dp背包九讲(待补充,暂时前两讲)
文章目录 背包九讲 一.01背包 二维dp 优化为一维 二.完全背包 二维dp 优化为一维 三.多重背包 数据范围很小时,变成01背包暴力 当数据范围较大时,利用二进制优化 二进制优化还不够用时,利用 ...
- 第二讲 完全背包问题(对背包九讲的学习)
学习自:背包九讲 题目 有N种物品和一个容量为V的背包,每种物品都有无限件可用.第i种物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. ...
- 算法--背包九讲(详细讲解+代码)
背包九讲 目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 ...
- 完全背包问题python_令人头疼的背包九讲(2)完全背包问题
重磅干货,第一时间送达 背包问题是一个经典的动态规划模型.它既简单形象容易理解,又在某种程度上能够揭示动态规划的本质,故不少教材都把它作为动态规划部分的第一道例题. 题目 完全背包问题 题目要求 有n ...
- dalao的背包九讲
背包九讲 目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 ...
最新文章
- Python+OpenCV实现AI人脸识别身份认证系统(2)—人脸数据采集、存储
- Zonbu-售价 99 美元的袖珍电脑
- 设计模式 — 创建型模式 — 原型模式
- 计算机键盘是编码键盘还是非编码键盘,矩阵按键原理图_矩阵按键扫描实例
- 白话Elasticsearch39-深入聚合数据分析之案例实战_搜索+聚合: 统计指定品牌下每个颜色的销量
- 刘歧:让人生不留遗憾
- 路由器获取不到ipv6地址
- 带本科生做毕设是什么样的体验,看看学生是怎么评价我的
- uniapp上拉加载
- 来看看 random_state 这个参数
- ajax请求是宏任务还是微任务_ASP.NET Web API基础(04)---异步编程和跨域请求 - 高原秃鹫...
- java设计模式 建造模式_java设计模式(三)建造者模式
- Mac 更新port卡住怎么办?
- EMC——青青子衿,居易安信
- Java实现生成和解析二维码
- 智能家居服务发现实现
- 三个大傻大闹你的脑袋,如何让他们胜过一个诸葛亮?
- 预渲染与服务端渲染的区别
- 阿里新一代Rank技术
- T8000中央空调综合节能智能控制系统 力载波技术 无需布线 高效节能省钱省力 倡导全国应用
热门文章
- java operator 重载 ==_运算符重载
- php urlencode 大写,HttpUtility.UrlEncode 编码输出的字母替小写,怎样改成大写呢
- 2019JAVA中ajax不高亮_2019-01-18 ajax请求时,token死活放不大header中
- 云优后台提交显示parsererror_Web测试必备技能——F12定位bug属于前端还是后台
- cad直线和圆弧倒角不相切_建议收藏:史上最全CAD快捷键大全
- python分析html文件_如何用Python解析HTML?
- Spring框架的本质:3了解一点儿JavaConfig
- python核心技术实战详解_Python核心技术实战详解
- 文件系统 83 linux,Linux文件系统
- WordPress目录解析