算法之动态规划--0、1背包
来源:互联网 发布:狐狸那时已是猎人知乎 编辑:程序博客网 时间:2024/06/07 07:51
经典的盗贼问题:
一个盗贼带着一个背包去偷东西,房中有五件物品:
1: 6公斤 48元
2:5公斤 40元
3:2公斤 12元
4:1公斤 8元
5:1公斤 7元
但是他的背包只能装下8攻击的东西 问他该怎样选择保障拿到的东西价值最大。
思路:
使用动态规划来实现,
1.将物品i 放到背包里面,修改选择标志
2.判断是否超重,如果没超重,继续第一步,如果超重,将该物品排除在方案之外,判断此时未排除的物品的总价值是否小于已有最大值;如果满足,则不必再尝试或许物品。
代码:
package 动态规划;class This{ double value;//价值 double weight;//重量 char isSelect;//记录是否已经选择了}public class Test { static double maxvalue; static double totalvalue; static double maxwt; static int num; static char[] seltemp; static void backpack(This[] goods,int i ,double wt,double vt){ int k; if(wt+goods[i].weight <= maxwt){ seltemp[i] = 1; if(i < num-1){ backpack(goods,i+1,wt+goods[i].weight,vt); } else{ for(k=0;k<num;k++){ goods[k].isSelect = seltemp[k]; } maxvalue = vt; } } seltemp[i] = 0; if(vt - goods[i].value >maxvalue){ if(i <num -1){ backpack(goods , i+1,wt,vt - goods[i].value); } else{ for(k = 0;k< num;k++){ goods[k].isSelect = seltemp[k]; } maxvalue = vt - goods[i].value; } }} public static void main(String[] args){ //test; }}
0 0
- 算法之动态规划--0、1背包
- [算法]动态规划之0-1背包
- 算法 -- 0-1背包问题之动态规划
- 【算法】——动态规划之0-1背包问题
- C++动态规划算法之0-1背包问题
- 0-1背包算法(动态规划)
- 0-1背包动态规划一般算法
- 0-1背包问题动态规划算法
- [算法]动态规划 0-1背包 完全背包
- 动态规划之0-1背包详解
- 动态规划之0-1背包详解
- 动态规划之0-1背包问题
- 动态规划之0-1背包问题
- 动态规划之0-1背包问题
- 动态规划 之 0-1背包问题
- 动态规划之0-1背包问题
- 动态规划之0/1背包问题
- 动态规划之0-1背包问题
- 如何获取耳机是否已插入和耳机实时插拔情况?
- C语言getopt()函数的使用
- 添加 Search Bar in Table View-iOS7
- 杭电1870 愚人节的礼物
- 解决窗口刷新闪烁
- 算法之动态规划--0、1背包
- PCA主成分分析
- .NET 环境下进行单元测试
- 多平台的开源股票市场技术分析库:TA-LIB
- Objective-C关于分类、扮演、协议
- C++基础系列(1)
- 第3周项目4考了语文数学的学生
- 分支-16. 计算分段函数(10)
- Ogre3d 2.1 源码编译安装教程