完全背包java实现

 完全背包是在N物品中选取若干件(同一种物品可多次选取)放在空间为V的背包里,每物品的体积为C1,C2,…,Cn,与之相对应的价值为W1,W2,…,Wn.求解怎么装物品可使背包里物品总价值最大。

下面是实现的java代码(由于写了好长时间了,整理电脑上的文件时想把多余的文件删掉,故先把程序写到这里,如果有空再解释。):

 

public class package1 {

 public static int beibao(int num,int value,int [][] f) {
	int[][] maxvalue=new int[num+1][value+1];
	for(int k=0;k<=num;k++)
	{
		maxvalue[k][0]=0;	
	}
	for(int y=0;y<=value;y++)
	{	
		maxvalue[0][y]=0;
	}
	for(int i=1;i<=num;i++)
	{
		for(int j=1;j<=value;j++){
			for(int x=0;x<=value/f[i-1][0];x++)
			{ 
				if(x*f[i-1][0]>j)
				{	boolean flag=true;
				  if(x==1)
					maxvalue[i][j]=maxvalue[i-1][j];
				  else {
					  maxvalue[i][j]=maxvalue[i][j-f[i-1][0]]+f[i-1][1];
				    }
					if(flag)
						break;
				}
				else if(maxvalue[i-1][j]>(maxvalue[i-1][j-x*f[i-1][0]]+x*f[i-1][1])){
					
					maxvalue[i][j]=maxvalue[i-1][j];
				}
				else {
					maxvalue[i][j]=maxvalue[i-1][j-x*f[i-1][0]]+x*f[i-1][1];
				}
					
		   }
		}
	}
	return maxvalue[num][value];
}
 public static void main (String[] args){
	 int num=4;
	 int weight=10;
	 int [][] ff={{2,1},{3,3},{4,5},{7,9}};
	 int max= beibao(num,weight,ff);
	 System.out.println(max);
 }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值