最优装载
问题描述:有一批集装箱要上一艘载重量为c的轮船。集装箱i的重量为wi.在装载体积不受限制的情况下,
将尽可能多的集装箱装上轮船。
贪心策略:选择重量小的装船。
算法如下:
//c为轮船容量,w:集装箱重量集合,x:加入与不加入1表示加入,0表示不加入
public static float loading(float c,float w[],int x[])
{
int n=w.length;
Element d[]=new Element[n];
for(int i=0;i<n;i++)
{
d[i]=new Element(w[i],i);
}
MergeSort.mergeSort(d);
float opt=0;//已经加入的重量
for(int i=0;i<n;i++)
{
x[i]=0;
}
for(int i=0;i<n&&d[i].w<=c;i++)//当前物品未装完,且质量小于轮船剩余载重量
{
x[d[i].i]=1;//加入为1
opt+=d[i].w;
c-=d[i].w;//剩余容量
}
return opt;