最近公司要弄乙個圖譜推薦的專案,在專案最後對剩餘的銷售人員使用貪心演算法進行最後一步過濾,獲取最佳銷售人員組合,話不多說,先把**貼出來
public class greedyalgorithm
mapnewfundperson = new hashmap<>();//相同銷售人員的工資和銷售額合併後的集合
set> fundpersonentryset = fundperson.entryset();
for (map.entrymap : fundpersonentryset)else
}mapresultmap = new hashmap<>();
newfundperson.foreach((l,s) ->
});//呼叫貪心演算法
int size = resultmap.size();
int wages = new int[size];//工資陣列
int salesvolume = new int[size];//銷售額陣列
string person = new string[size];
set> newfundpersonentries = resultmap.entryset();
iterator> iterator1 = newfundpersonentries.iterator();
int i = 0;
while (iterator1.hasnext())
// newfundperson.foreach((key,value) -> );
listpersonlist = greedyalgorithm.greedy(cost, wages, salesvolume, person);
return personlist;
}public static listgreedy(int cost, int wages, int salesvolume,string person)
double temp = 0; //對價效比進行排序
for(int i = 0;i < n - 1;i++)}}
//將排序好的工資、銷售額和人員分別按照價效比順序存到陣列中
int w1 = new int[n];
int value1 = new int[n];
string person1 = new string[n];
listpersonlist = new arraylist<>();
for(int i = 0;i < n;i++)
int maxvalue = 0;
for(int i = 0;i < n;i++)
}system.out.println("進一步演算法計算得出可以推薦的銷售人員組合為:" + personlist.tostring());
system.out.println("該組合可創造的最大價值為:" + maxvalue);
return personlist;
}/*public static void main(string args) ;
int values = new int;
string person = new string;
greedyalgorithm.greedy(max_weight,weights,values,person);
}*/}
大致過程分為一下幾步進行:
1、取得最大成本和每個個體的銷售業績和工資等
2、求得每個個體的價效比,按照從高到低進行排序
3、將排序好的工資、銷售額和個體分別按照價效比順序儲存到陣列中
4、在預算還有剩餘的情況下,按照是否能放的下當前個體選擇是否選擇當前個體
總結:貪心演算法最重要的就是抓住價效比和總成本兩個核心!
我的貪心演算法總結
貪心演算法是將乙個複雜問題分解成一系列簡單的區域性最優選擇,每一步選擇都是對當前解的擴充套件,直到獲得問題的完整解。貪心選擇只是某種意義上的區域性最優解,但是有時候這種區域性最優解並不是總能獲得整體最優解,但即使不能獲得整體最優解也能獲得近似最優解。貪心演算法主要體現在乙個 貪 在解決問題的策略上目...
隨筆 貪心演算法的理解
今天 爸爸問我有沒有什麼夢想 我說未來還遠 我也還小 有夢想雖然很不切實際 但是我還是想去努力 其實我也想說 未來的事 那就交給未來去做 不要想太多 當下就只做好當下的 這就是貪心演算法的定義吧哈哈哈 我不用去想下一步怎麼做 也不從整體最優上加以考慮 我所做出的僅是在某種意義上的區域性最優解 也就是...
經典貪心演算法 貪心演算法概述
貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...