0 1背包问题 java_0-1背包问题,java的动态规划如题,代码如下public

本文介绍了如何使用Java实现0-1背包问题的动态规划解决方案,通过实例展示了如何计算物品价值的最大组合,同时关注了价值最大化的决策过程。代码中涉及到了三种情况的选择和价值比较,最后输出放入包中的物品及最大价值。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

0-1背包问题,java的动态规划

如题,代码如下

public class dongtaiguihua01

{

public static void main(String []args)

{

int W=10;//背包的总重量

int []w= {2,2,6,5,4};//物品的相应重量

int []v= {6,3,5,4,6};//物品的相应价值

int [][]value=new int [5][11];

int []num= new int [4];

for(int i=0;i<5;i++)

{

for(int j=0;j<11;j++)

{

if(i==0||j==0)

{

value[i][j]=0; //第一种情况

}

else if(w[i]>j)

{

value[i][j]=value[i-1][j];//第二种情况

}

else if(i>0&&w[i]<=j)//第三种情况

{

int num1,num2;

num1=value[i-1][j-w[i]]+v[i];//放入后的价值

num2=value[i-1][j];//没有放入的价值

if(num1>num2)

{

value[i][j]=num1;

}

else

{

value[i][j]=num2;

}

}

}

}

//已经求出最大的价值,并且已经知道最后一个元素是否放入包中

for(int i=3;i>=0;i--)

{

if(value[i+1][W]!=value[i][W])

{

num[i]=1;

W=W-w[i+1];

}

else {

num[i]=0;

}

}

System.out.println("放入包中的物品为:");

for(int i=0;i<4;i++)

{

if(num[i]==1)

{

System.out.println("质量为:"+w[i+1]+",价值为:"+v[i+1]);

}

}

System.out.println("最大的价值为:"+value[4][10]);

}

}

#吴世勋朴灿烈合作新专辑##吴世勋朴灿烈合作新专辑#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值