动态规划:0-1背包问题
给定N个物品和一个背包,背包的容量为W, 假设背包容量范围在[0,15],第i个物品对应的体积和价值分别为W[i]和v[i]。各种物品的价值和重量如下:
物品编号 1 2 3 4 5
重量W 3 4 7 8 9
价值V 4 5 10 11 13
求: 如何选择装入背包的物品,使得装入背包的物品的总价值为最大。
解题思路:
首先,我们需要创建一个二维数组 m[n+1][c+1] 用来存储在当前背包容量下的价值, n+1 表示第几个物品, c+1 表示当前背包的容量,再创建一个一维数组 x[n] 用来判断该物品是否被选中。
代码如下:
int max(int a ,int b)
{
if(a>b) return a;
return b;
}
void knapStack(int m[ ][ ],int w[ ],int v[ ],int x[ ] ,int n,int c)
{
int i,j;
//第一行第一列为0
for(i = 0; i <= n;i++)
{
m[i][0]=0;
}
for(j=1;j<=c;j++)
{
m[j][0]=0;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=c;j++)
{
if(j<w[i])//当前背包容量大小比第i个物品小
{
m[i][j] = m[i-1][j];//则此时价值等于上一个的价值
}
else
{
m[i][j] = max(m[i-1][j],m[i-1][j-w[i]]+v[i]);
}
}
}
j=c;
for(i=1;i<=n;i++)
{
if(m[i][j]>m[i-1][j])//从二维数组上方开始,若下一个比上一个大说明该物品 i 放入了背包
{
x[i]=1;
j = j-w[i-1];//放入背包,故背包可容纳减少
}
else
{
x[i]=0;
}
}
}
动态规划:0-1背包问题相关推荐
- 动态规划——0/1背包问题(全网最细+图文解析)
✨动态规划--0/1背包问题(全网最细+图文解析) 作者介绍:
- 动态规划0—1背包问题
动态规划0-1背包问题 Ø 问题描写叙述: 给定n种物品和一背包.物品i的重量是wi,其价值为vi,背包的容量为C.问应怎样选择装入背包的物品,使得装 入背包中物品的总价值最大? Ø ...
- 背包问题动态规划matlab,01背包问题动态规划详解
计算机算法分析考试:动态规划0-1背包问题,怎么算她说她没醉,却一直摇摇晃晃掉眼泪:你说你爱她,却从未想过给她一个家. 要考试了,老师给划重点有一题:动态规划0-1背包问题,怎么算. 怎么理问题描述: ...
- 0/1背包问题——动态规划方法
1.定义 动态规划:把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解. 2.求解步骤 (1)找到状态转化条件 (2)归纳状态转移方程 (3)定义初始条件值 3.实例解析--0/1背包 ...
- 【动态规划】0/1背包问题
问题 H: [动态规划]0/1背包问题 时间限制: 1 Sec 内存限制: 64 MB 提交: 152 解决: 95 [提交] [状态] [讨论版] [命题人:admin] 题目描述 张琪曼和李旭 ...
- 0/1背包问题——动态规划、回溯、分支限界法对比
0/1背包问题--动态规划.回溯.分支限界法对比 2017.12.19 20:42:02 字数 3713 阅读 2820 目录 1.问题描述 1.1 问题描述 1.2 问题的数学表示(规划类问题,此种 ...
- 动态规划之0/1背包问题(动态规划入门)
动态规划很早以前就接触过但是因为太晦涩难懂一下子到现在才开始真正的学习到其中的道理,0/1背包问题是动态规划的入门类问题 比较好理解 首先我们要知道动态规划是用于解决最优解的问题 它是一种思想而不是一 ...
- 0/1背包问题-----动态规划求解
问题描述 有n个物品和一个容量为c的背包,从n个物品中选取装包的物品.物品i的重量为w[i],价值为p[i].一个可行的背包装载是指,装包的物品总重量不超过背包的重量.一个最佳背包装载是指,物品总价值 ...
- 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析
// 利用动态规划解决0-1背包问题 using System; using System.Collections.Generic; using System.Linq; using System.T ...
- 算法导论——动态规划:0-1背包问题(完全解)
2019独角兽企业重金招聘Python工程师标准>>> package org.loda.dynamic;import org.junit.Test;/*** * @ClassNam ...
最新文章
- 路由器管理页面html,196.168.1.1登陆页面网址
- sql server varchar最大长度_来自灵魂的拷问—知道什么是SQL执行计划吗?
- 通过MATLAB提取图像的深度信息
- STM32F1迷你板外部中断
- python开发小型数据库_python数据库编程小应用
- 软件工程师的6年总结
- dbscan算法c语言实现,用C++实现DBSCAN聚类算法
- Linux下搭建mysql主从服务器
- 在linux下的vsftp的使用
- mnist数据集下载地址
- 修改android设备型号
- 【Java二十周年】十年,二十年
- NOIP2014提高组 飞扬的小鸟
- iLife '09测评
- 开发随笔——花生壳错误“您的局域网服务器连接失败,请检查局域网IP与端口“
- 论文阅读笔记《Few-Shot Learning with Global Class Representations》
- SpaceShooter打飞机教程笔记(一)
- 【ninja】Ninja安装和基本使用
- C语言关闭终端回显【转】
- 嵌套饼图设置不同的颜色
热门文章
- [附源码]计算机毕业设计JAVA流浪动物领养系统
- 基于主动学习的高光谱图像分类方法研究
- C语言:atoi函数:字符串转换成整型数
- win8.1 android驱动安装失败,win8.1驱动安装失败提示“数据无效”如何解决
- elementUI form表单使用validateField方法校验部分表单
- Oracle 创建表空间详细过程
- mysql coalesce函数_mysql coalesce函数
- 【进阶一】Python实现MDCVRP常见求解算法——差分进化算法(DE)
- 2022年湖南省房地产经纪人(房地产经纪专业基础)练习题及答案
- 速看,微信这些功能你知道吗?