回溯法解决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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux查看ftp用户列表_linux ftp下载命令

    linux查看ftp用户列表_linux ftp下载命令ftp服务器在网上较为常见,Linuxftp命令的功能是用命令的方式来控制在本地机和远程机之间传送文。下面由学习啦小编为大家整理了linux下查询ftp命令的相关知识,希望对大家有所帮助。Linuxftp命令的格式$ftp主机名/IP其中“主机名/IP”是所要连接的远程机的主机名或IP地址。在命令行中,主机名属于选项,如果指定主机名,ftp将试图与远程机的ftp服务程序进行连接;如果没有指…

    2022年9月21日
  • python中文占几个字节_中文在python中占几个字节

    python中文占几个字节_中文在python中占几个字节如果是utf-8编码,那么一个中文字符占用三个字节,一个英文字符占用一个字节。如果是gbk编码,那么一个中文字符占用两个字节,一个英文字符占用一个字节。如果是utf-8编码,那么一个中文包含繁体字等于三个字节,一个英文字符等于一个字节。如果是gbk编码,那么一个中文包含繁体字等于两个字节,一个英文字符等于一个字节。(推荐学习:Python入门教程)我们可以用如下方法来判断:中文和符号:print(…

    2022年6月26日
  • scipy.interpolate.interp1d()函数详解

    scipy.interpolate.interp1d()函数详解插值模块scipy.interpolate是插值模块,插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。与拟合不同的是,要求曲线通过所有的已知数据。计算插值有两种基本的方法:对一个完整的数据集去拟合一个函数;仿样内插法:对数据集的不同部分拟合出不同的函数,而函数之间的曲线平滑对接。SciPy的interpolate模块提供了许多对数…

    2022年6月9日
  • 文章3说话 微信商城云server创建后台

    文章3说话 微信商城云server创建后台

    2022年1月1日
  • iscsiadm用法简介[通俗易懂]

    iscsiadm用法简介[通俗易懂]已知192.168.14.112节点,存在目标器 iqn.2015.06.cn.hrbyg.www.ygcs.c0a802b8:wzg,未设置CHAP,存在目标器 iqn.2015

    2022年7月1日
  • getMessage(),getFile,getLine获取异常用法

    getMessage(),getFile,getLine获取异常用法

    2021年11月8日

发表回复

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

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