算法java实现--贪心算法--最优装载问题

最优装载问题算法的java实现(贪心算法)

具体问题描述以及C/C++实现参见网址

【贪心算法】背包问题,最优装载问题

/**
 * 最优装载问题(贪心算法)
 * @author Lican
 *
 */
public class BestLoading {
	public 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);
		}
		java.util.Arrays.sort(d);
		for(int i=0;i<n;i++)
			x[i]=0;
		float op=0;
		for(int i=0;i<n&&d[i].w<=c;i++){
			op+=d[i].w;
			c-=d[i].w;
			x[d[i].i]=1;
		}
		return op;
	}
	static class Element implements Comparable{
		float w;
		int i;
		public Element(float ww,int ii){
			w=ww;
			i=ii;
		}
		@Override
		public int compareTo(Object x) {//按每个重量从小到大排列
			float xx=((Element)x).w;
			if(this.w<xx) return -1;
			if(this.w==xx) return 0;
			return 1;
		}
		
	}
	public static void main(String[] args) {
		 float w[] = {20,10,26,15};//下标从0开始
		 float c=70;
		 int[] x=new int[w.length];
		 BestLoading be= new BestLoading();
		 System.out.println("最优得到装载重量为:"+be.loading(c, w, x));
		 System.out.println("被装载的集装箱序号为(下标从0开始):");
		 for(int i=0;i<w.length;i++){
			 if(x[i]==1)
				 System.out.print(i+" ");
		 }
	}
}

运行结果如图:

《算法java实现--贪心算法--最优装载问题》

    原文作者:贪心算法
    原文地址: https://blog.csdn.net/lican19911221/article/details/24701525
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞