算法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+" ");
		 }
	}
}


運行結果如圖:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章