用貪心演算法揹包問題,Java實現

2021-07-31 01:57:14 字數 1455 閱讀 5687

package n18_揹包問題貪心演算法;

/* * 用貪心演算法解揹包問題

*/public

class

main ;//物體的重量

double v = ;//物體的價值

double m = 170;// 揹包所能容納的重量

int n = w.length - 1;// 物體的個數

double x = new

double[n + 1];// 每個物體裝進的比例,大於等於0並且小於等於1

f(w, v, m, n, x);//呼叫貪心演算法函式

system.out.println("排序後的物體的重量:");

for(int i=1;i<=n;i++)

system.out.println();

system.out.println("排序後的物體的價值:");

for(int i=1;i<=n;i++)

doublet=new

double[n+1];//定義乙個陣列表示單位重量物體的價值

for(int i=1;i<=n;i++)

//用氣泡排序對doublet進行排序(大的在前)

for(int i=1;i<=n;i++)}}

system.out.println();

system.out.println("排好序後的單位物體的價值: ");

for(int i=1;i<=n;i++)

double maxvaluesum=0; //用來存放揹包能裝下的物體的最大價值總和

for(int i=1;i"排序後每個物體裝進揹包的比例:");

for(int i=1;i<=n;i++)

system.out.println();

system.out.println("揹包能裝下的物體的最大價值總和為: "+maxvaluesum);

}/**

* *@param w 物體的重量

*@param v 物體的價值

*@param m 揹包的容量

*@param n 物體的個數

*@param x 每個物體裝進揹包的比例,取值0<=x[i]<=1,(1<=i<=n)

*/private

static

void

f(double w, double v, double m, int n, double x) else

}if (i <= n)}/*

* 可以按氣泡排序來寫,先計算w中每個物體單位價值存成乙個陣列,然後氣泡排序,

* 若有元素交換,對應w中相同標號的元素也交換就可以了

*/private

static

void

sort(double w, double v, int n)

for(int i=1;i<=n;i++)}}

}}

用貪心演算法解決揹包問題

貪心演算法 顧名思義,貪心演算法 總是能做到當前看來是最好的選擇。也就是說貪心演算法並不從整體最優上加以考慮,它所作出的選擇只是在某種意義上的 區域性最優選擇 所謂貪心選擇性質是指所求問題的整體最優解可以通過一系列區域性最優的選擇,是貪心演算法與動態規劃演算法的主要區別。0 1揹包問題 給定n種物品...

揹包問題(貪心演算法)

揹包問題 程式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...

貪心演算法 揹包問題

詳細見原帖 我寫的是自己的感悟 揹包問題 有乙個揹包,揹包容量是m 150。有7個物品,物品可以分割成任意大小。要求盡可能讓裝入揹包中的物品總價值最大,但不能超過總容量。物品 a b c d e f g 重量 35 30 60 50 40 10 25 價值 10 40 30 50 35 40 30 ...