回溯法解决01背包问题算法_01背包问题伪代码

回溯法解决01背包问题算法_01背包问题伪代码0-1背包问题,在搜索过程中使用递归来完成。packagecom.test;classPack{intn=8;//物品个数intW=110;//背包总容量int[]Weights={1,11,21,23,33,43,45,55};//重量数组int[]Values={11,21,31,33,43,53,55,65};//价值数组intbestValu…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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);

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184059.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • unity 三维地球_three.js地球

    unity 三维地球_three.js地球本数字地球全部由作者自由开发完成,未使用任何第三方插件,拥有完全知识产权。2021年10月9日更新已支持离线版高程数据和离线卫星影像数据。2021年1月22日更新全球任意位置模型可正常加载,无变形抖动。2021年12月15日更新日出、日落、大气散射、蓝天效果。说明这个不是GIS软件,是一个带地形的三维地球。2021年11月24日更新支持。2021年11月15日更新支持。,运行流畅无卡顿,占用内存小,最大等级可达到地图20级。在线加载全球地形,也可。…

    2026年1月26日
    3
  • debian10 中文乱码_ue中文乱码解决方案

    debian10 中文乱码_ue中文乱码解决方案系统版本:Debian6.0.2Squeeze产生乱码原因:系统没有中文字体解决方案:1、从win下拷贝后缀为ttf的字体库到/usr/share/fonts/truetype/,我这里拷贝MSYH.ttf(微软雅黑)。2、终端输入一下代码:   #su

    2022年10月18日
    3
  • 重定向和转发的区别及应用_重定向发给别人能看见吗

    重定向和转发的区别及应用_重定向发给别人能看见吗重定向和转发的区别:一:重定向与转发的区别1.重定向过程:客户端浏览器发送http请求→web服务器接收后发送30X状态码响应及对应新的location给客户浏览器→客户浏览器发现是30X响应,则自动再发送一个新的http请求,请求url是新的location地址→服务器根据此请求寻找资源并发送给客户。//java代码示例response.sendRedirect(“xxx.jsp或者servlet”);2.转发过程:客户端浏览器发送http请求→web服务器接受此请求→

    2025年10月8日
    3
  • 日语自动词和他动词是什么意思_日语自动词他动词总结

    日语自动词和他动词是什么意思_日语自动词他动词总结http://coffeejp.com/bbs/thread-182243-1-1.html自动词:强调自发的行为他动词:强调他人驱使的行为拿到两个动词后按照它们的构词形式可以进行区分,基本可以分为4种方法(1)两个动词都以「る」结尾时:看「る」前的那个假名(汉字除外),如果是「あ」段假名,一般是自动词;如果是「え」段假名,一般是他动词(2)两个动词一个以「る」结尾,另一个不是以「る」结尾…

    2025年7月3日
    3
  • 第三章 语义陷阱

    第三章 语义陷阱

    2022年1月10日
    34
  • 从零开始写一个发送h264的rtsp服务器(上)「建议收藏」

    从零开始写一个发送h264的rtsp服务器(上)

    2022年3月13日
    104

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号