演算法設計的揹包問題-------------用貪心演算法求解
阿新 • • 發佈:2019-01-30
•public static float knapsack(float c,float [] w, float [] v,float [] x)
• {
• int n=v.length;
• Element [] d = new Element [n];
• for (int i = 0; i < n; i++) d[i] = new Element(w[i],v[i],i);
• MergeSort.mergeSort(d); / /按單位價值由高道低排序
• int i;
• float opt=0;
• for (i=0;i<n;i++) x[i]=0;
• for (i=0;i<n;i++) {
• if (d[i].w>c) break;
• x[d[i].i]=1; / /標記i的物品已被裝入揹包
• opt+=d[i].v;
• c-=d[i].w;
• }
• if (i<n){
• x[d[i].i]=c/d[i].w;
• opt+=x[d[i].i]*d[i].v;
• } / /把揹包裝滿
• return opt;
• }