背包算法



import java.util.Vector;

public class PackageTest {

/**
* 背包算法:最优化问题,为一个给定空间或负重的背包和许多大小不一的物体分配适合的空间
* 哪些物体放入背包才能使得浪费的背包空间或负重最小?
* 在背包很小和物体数目较少时,这个问题还比较容易解决,但当背包很大且有很多个物体时,
* 问题的求解就十分困难,通常这个问题会有一个或多个解,也有可能根本没有解。。。。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

int a[]={11,8,7,6,5};
int b[]={13,8,7,6,5};
int total=20;
int leftbound=total;
int max=0;
int i=0;
int j=0;
Vector v1=new Vector();
Vector v2=new Vector();
while(j<5){
i=j;
while(i<5){
if(a[i]<=leftbound){
v1.addElement(new Integer(a[i]));
v2.addElement(new Integer(i));
}
if(i>=4 && !v1.isEmpty()){
int value=0;
for(int k=0;k<v1.size();k++){
System.out.print(((Integer)v1.elementAt(k)).intValue());
System.out.print(",");
value=value+b[((Integer)v2.elementAt(k)).intValue()];
}
System.out.println("value="+value);
if(max<value){
max=value;
}
leftbound=leftbound+((Integer)v1.remove(v1.size()-1)).intValue();
i=((Integer)v2.remove(v2.size()-1)).intValue()+1;
continue;
}
i++;
}
j++;
leftbound=total;
int value=0;
for(int k=0;k<v1.size();k++){
System.out.println((Integer)v1.elementAt(k));
System.out.println(",");
value=value+b[((Integer)v2.elementAt(k)).intValue()];
}
System.out.println("value="+value);
if(max<value){
max=value;
}
while(!v1.isEmpty()){
v1.remove(v1.size()-1);
v2.remove(v2.size()-1);
}
}
System.out.println("max="+max);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值