回溯法求解背包问题java_背包问题回溯法的递归实现(java)
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)相关推荐
- 分枝限界法求解0/1背包问题
问题描述 有n个重量分别为{w1,w2,-,wn}的物品,它们的价值分别为{v1,v2,-,vn},给定一个容量为W的背包. 设计从这些物品中选取一部分物品放入该背包的方案,每个物品要么选中要么不选中 ...
- 回溯法 —— 求解0/1背包问题(剪枝)
0/1背包问题 题目描述: 有n个重量分别为w1,w2,-,wn的物品(物品编号为1~n),它们的价值分别为v1,v2,-,vn,给定一个容量为W的背包.设计从这些物品中选取一部分物品放入该背包的方案 ...
- 递归法全排列java_实验一 分治与递归—全排列 java算法
全排列: 设R={r1,r2,r3--rn}是要排列的n个元素,Ri=R-{ri}.集合X中元素的全排列记perm(X). 源代码: import java.io.*; import java.uti ...
- 0/1背包问题-----回溯法求解
问题描述 有n个物品和一个容量为c的背包,从n个物品中选取装包的物品.物品i的重量为w[i],价值为p[i].一个可行的背包装载是指,装包的物品总重量不超过背包的重量.一个最佳背包装载是指,物品总价值 ...
- 回溯法求解0-1背包问题
回溯法求解0-1背包问题时比较随机序列和按 v/w 降序排列的算法 问题描述: 针对0-1背包问题,尝试用回溯法. 物品总数N=10,背包容量 C=26, 物品的重量数组为w={7,3,10,12,1 ...
- 01背包问题【回溯法求解】通俗易懂,适合小白
本人此时还是一名研一的小菜鸡,刚学会了这个算法的基本概念,来总结一下,谁知道今后的我再看到这篇自己写的博客的时候会不会笑出来,哈哈哈哈哈哈哈哈,所以吗,错了的化大佬们评论指正就好了. 还有系列文章动态 ...
- 回溯法求解0-1背包问题(细节分析)
回溯法求解0-1背包问题(细节分析) 论temp数组的必要性和判断cv>bestv的不必要性 回溯法 应用回溯法求解问题时,首先应明确定义问题的解空间,该解空间应至少包含问题的一个最优解.例如, ...
- 【算法分析】实验 4. 回溯法求解0-1背包等问题
目录 实验内容 实验目的 实验结果 步骤1:描述与分析 步骤2:策略以及数据结构 步骤3 步骤4 步骤5 步骤6 实验总结 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述.算法设 ...
- java背包算法回溯法_【算法分析】实验 4. 回溯法求解0-1背包等问题
[TOC] 实验内容 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述.算法设计.算法描述.算法正确性证明.算法分析.算法实现与测试),通过回溯法的在实际问题求解实践中,加深理解其基本原理和 ...
最新文章
- 温控自动烘焙系统的研究与实现
- android高级组件,Android高级组件ImageSwitcher图像切换器使用方法详解
- Python代码规范和命名规范
- Java基础知识练习02
- 在 iOS 应用中直接跳转到 AppStore 的方法
- RabbitMQ——无法连接错误[AmqpConnectException: java.net.ConnectException: Connection refused: connect]解决方案
- 【Linux系统编程】信号 (下)
- java独步寻花,小班语言《江畔独步寻花》
- Git笔记(29) 搜索
- (45)System Verilog 类中变量随机激励约束语法
- VMware vSAN入门必会知识点
- pandas库与numpy库
- 0x8000FFFF 错误的解决方式
- 信息奥赛课课通(C++)p139-例3幸运数的划分
- [杀鸡用鸡刀]扯谈“快准狠”的去服务化商业模式
- npm ERR code EEXIST 报错 解决方案
- 更改zabbix数据库mandatory
- 创客学院9天C语言一
- ICN(Information-Centric Networking)初步介绍
- 如何查找网页中的源代码文件
热门文章
- idea 热部署_Spring Boot Idea中热部署(自动刷新)
- 什么舱位_海运出口中FOB条款是什么意思?
- ios 后台唤醒应用_苹果不用背锅了!微信被杀后台是因为“耍流氓”?用户该听谁的?...
- postgre管理员 无法访问表_PostgreSQL常见问题处理方法
- Vue-cli 3.0+ 设置接口代理 设置vue.config.js的配置项
- Eigen教程(11)之存储顺序
- 求2014年九月国二c语言考试小抄,2014年全国计算机等级二级C语言上机考前预测(含答案)17...
- java获取年份getyear_Java LocalDateTime getYear()用法及代码示例
- Halcon图像预处理与形态学(图像的几何变换)
- 区块链第三方支付已登陆菲律宾