0-1背包问题,在搜索过程中使用递归来完成。

package com.test;

class Pack {

int n = 8; //物品个数

int W = 110; //背包总容量

int[] Weights = {1,11,21,23,33,43,45,55}; //重量数组

int[] Values = {11,21,31,33,43,53,55,65}; //价值数组

int bestValue = 0; //获得的最大价值

//回溯搜索

void BackTrack(int depth,int preWeights,int preValues){

int currentWeight = preWeights;

int currentValue = preValues;

if(depth >= n){ //达到最大深度

if(bestValue < currentValue){

bestValue = currentValue;

}

return ;

}

if(currentWeight+Weights[depth] < W){ //是否满足约束条件

currentWeight +=Weights[depth];

currentValue +=Values[depth];

//选取了第i件物品

BackTrack(depth+1,currentWeight,currentValue); //递归求解下一个物品

//恢复背包的容量和价值

currentWeight -= Weights[depth];

currentValue -= Values[depth];

}

//不选取第i件物品

BackTrack(depth+1,currentWeight,currentValue);

}

public int GetBestValue(){

BackTrack(0,0,0);

return bestValue;

}

}

public class Test{

public static void main(String[] args) {

Pack pack = new Pack();

int bestValue = pack.GetBestValue();

System.out.println("背包内最大物品价值为:"+bestValue);

}

}

回溯法求解背包问题java_背包问题回溯法的递归实现(java)相关推荐

  1. 分枝限界法求解0/1背包问题

    问题描述 有n个重量分别为{w1,w2,-,wn}的物品,它们的价值分别为{v1,v2,-,vn},给定一个容量为W的背包. 设计从这些物品中选取一部分物品放入该背包的方案,每个物品要么选中要么不选中 ...

  2. 回溯法 —— 求解0/1背包问题(剪枝)

    0/1背包问题 题目描述: 有n个重量分别为w1,w2,-,wn的物品(物品编号为1~n),它们的价值分别为v1,v2,-,vn,给定一个容量为W的背包.设计从这些物品中选取一部分物品放入该背包的方案 ...

  3. 递归法全排列java_实验一 分治与递归—全排列 java算法

    全排列: 设R={r1,r2,r3--rn}是要排列的n个元素,Ri=R-{ri}.集合X中元素的全排列记perm(X). 源代码: import java.io.*; import java.uti ...

  4. 0/1背包问题-----回溯法求解

    问题描述 有n个物品和一个容量为c的背包,从n个物品中选取装包的物品.物品i的重量为w[i],价值为p[i].一个可行的背包装载是指,装包的物品总重量不超过背包的重量.一个最佳背包装载是指,物品总价值 ...

  5. 回溯法求解0-1背包问题

    回溯法求解0-1背包问题时比较随机序列和按 v/w 降序排列的算法 问题描述: 针对0-1背包问题,尝试用回溯法. 物品总数N=10,背包容量 C=26, 物品的重量数组为w={7,3,10,12,1 ...

  6. 01背包问题【回溯法求解】通俗易懂,适合小白

    本人此时还是一名研一的小菜鸡,刚学会了这个算法的基本概念,来总结一下,谁知道今后的我再看到这篇自己写的博客的时候会不会笑出来,哈哈哈哈哈哈哈哈,所以吗,错了的化大佬们评论指正就好了. 还有系列文章动态 ...

  7. 回溯法求解0-1背包问题(细节分析)

    回溯法求解0-1背包问题(细节分析) 论temp数组的必要性和判断cv>bestv的不必要性 回溯法 应用回溯法求解问题时,首先应明确定义问题的解空间,该解空间应至少包含问题的一个最优解.例如, ...

  8. 【算法分析】实验 4. 回溯法求解0-1背包等问题

    目录 实验内容 实验目的 实验结果 步骤1:描述与分析 步骤2:策略以及数据结构 步骤3 步骤4 步骤5 步骤6 实验总结 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述.算法设 ...

  9. java背包算法回溯法_【算法分析】实验 4. 回溯法求解0-1背包等问题

    [TOC] 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述.算法设计.算法描述.算法正确性证明.算法分析.算法实现与测试),通过回溯法的在实际问题求解实践中,加深理解其基本原理和 ...

最新文章

  1. 温控自动烘焙系统的研究与实现
  2. android高级组件,Android高级组件ImageSwitcher图像切换器使用方法详解
  3. Python代码规范和命名规范
  4. Java基础知识练习02
  5. 在 iOS 应用中直接跳转到 AppStore 的方法
  6. RabbitMQ——无法连接错误[AmqpConnectException: java.net.ConnectException: Connection refused: connect]解决方案
  7. 【Linux系统编程】信号 (下)
  8. java独步寻花,小班语言《江畔独步寻花》
  9. Git笔记(29) 搜索
  10. (45)System Verilog 类中变量随机激励约束语法
  11. VMware vSAN入门必会知识点
  12. pandas库与numpy库
  13. 0x8000FFFF 错误的解决方式
  14. 信息奥赛课课通(C++)p139-例3幸运数的划分
  15. [杀鸡用鸡刀]扯谈“快准狠”的去服务化商业模式
  16. npm ERR code EEXIST 报错 解决方案
  17. 更改zabbix数据库mandatory
  18. 创客学院9天C语言一
  19. ICN(Information-Centric Networking)初步介绍
  20. 如何查找网页中的源代码文件

热门文章

  1. idea 热部署_Spring Boot Idea中热部署(自动刷新)
  2. 什么舱位_海运出口中FOB条款是什么意思?
  3. ios 后台唤醒应用_苹果不用背锅了!微信被杀后台是因为“耍流氓”?用户该听谁的?...
  4. postgre管理员 无法访问表_PostgreSQL常见问题处理方法
  5. Vue-cli 3.0+ 设置接口代理 设置vue.config.js的配置项
  6. Eigen教程(11)之存储顺序
  7. 求2014年九月国二c语言考试小抄,2014年全国计算机等级二级C语言上机考前预测(含答案)17...
  8. java获取年份getyear_Java LocalDateTime getYear()用法及代码示例
  9. Halcon图像预处理与形态学(图像的几何变换)
  10. 区块链第三方支付已登陆菲律宾