貪心演算法 一般揹包問題

2021-08-20 23:14:49 字數 751 閱讀 8210

/**

* 定義乙個物體類

*/class body

/**

* 一般揹包問題的**實現

*@param w:每個物體重量的陣列

*@param p:每個物體收益的陣列

*@param m:揹包載重

*@return 結果集(放入哪幾個物體、每個物體放入多少部分)

*/listcommonpackage( int w, int p, int m )

// 對價效比排序(從高到低排序)

collections.sort(bodys, new comaprator()

});// 將物體按照價效比從高到低依次加入揹包

int rest = m;// 剩餘重量

int i=0;

listresults = new arraylist<>();// 存放結果集

for(; iif ( restbreak;

body curbody = bodys.get(i);

results.add(curbody);

rest -= curbody.w;

}// 計算最後乙個物體能放入的部分

body lastbody = bodys.get(i);

results.add(new body(lastbody.id,rest,(lastbody.p*rest/lastbody.w));

}

一般揹包問題的貪心演算法

2.寫出一般揹包問題的貪心演算法。輸入 先輸入物品的個數n,再輸入揹包的容量c,然後依次輸入物品的重量wi,最後依次輸入物品的價值vi。注意 所有值都不能隨機生成!輸出 物品的選擇向量xi,0 public static void main string args for int i 0 i n i...

貪心演算法 二 一般揹包問題

有乙個揹包,最多放m kg的物體 物體大小不限 有n個物體,每個物體的重量為wi,每個物體完全放入揹包後可獲得收益pi。問 如何放置能獲得最大的收益?注 揹包問題分為兩種,若每個物體不可分割,則稱為0 1揹包問題,這種問題無法用貪心法求的最優解,只能求的近似解。而若每個物體可以切分,則稱為一般揹包問...

揹包問題(貪心演算法)

揹包問題 程式8 4 2.cpp 定義控制台應用程式的入口點。揹包問題 貪心演算法 include stdafx.h define maxnumber 20 typedef struct node object float find object wp,int n,float m i 0 while...