使用貪心演算法的條件
1.貪心選擇性質:即所求問題的最優解可以通過一系列區域性最優的選擇來達到。
2.最優子結構性質:當乙個問題的最優解包含其子問題的最優解時,稱此問題有最優子結構性質
活動安排問題:
有11個活動,活動按照結束時間的非遞減排序如下:
i 1 2 3 4 5 6 7 8 9 10 11
start[i] 1 3 0 5 3 5 6 8 8 2 12
finish[i] 4 5 6 7 8 9 10 11 12 13 14
思路:
1.需要先選定你的貪心的準則,是盡量活動安排的多,那麼就以結束時間為基準,誰最先結束就先安排哪個活動
2.因為活動已經按照結束時間排序了,所以當前乙個活動的結束時間與後乙個活動的開始時間無衝突,就安排這個活動。
具體實現:
package 中級;
public
class 貪心演算法活動安排問題 ;
//結束時間陣列
int end = ;
//建立乙個陣列儲存是否安排活動
boolean arrange = new boolean[11];
//遍歷陣列,判斷那些需要安排,安排的規則是按照順序,沒有相交的部分就安排
arrange[0] = true;
for(int i=1,j = 0;i//如果前乙個的結束時間比後乙個的開始時間小。則安排下去
if(end[j] < start[i])else
}system.out.print("安排的活動有:");
for(int i=0;iif(arrange[i] == true)}}
}
總結:
1.這個問題用貪心演算法是否能解決
2.如果能夠使用貪心演算法,那麼貪心的準則是什麼?(活動的問題的貪心準則就是活動的數量)
3.根據貪心的準則,明確需要進行判斷的依據是什麼?(活動安排問題,想要多的活動,就判斷活動的結束時間,越早結束,安排的節目更多)
活動安排問題 貪心演算法
問題表述 設有n個活動的集合 e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活 i都有乙個要求使用該資源的起始時間 si和乙個結束時間 fi,且 si 如果選擇了活動 i,則它在半開時間區間 si,fi 內占用資源。若區間 si,fi 與區間 sj,...
活動安排問題(貪心演算法)
類似的問題是 選點問題和區間覆蓋問題。活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合,是可以用貪心演算法有效求解的很好例子。該問題要求高效地安排一系列爭用某一公共資源的活動。貪心演算法提供了乙個簡單 漂亮的方法使得盡可能多的活動能相容地使用公共資源。設有n個活動的集合e 其中每個活動都...
活動安排問題 貪心演算法
活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合,是可以用貪心演算法有效求解的很好例子。該問題要求高效地安排一系列爭用某一公共資源的活動。貪心演算法提供了乙個簡單 漂亮的方法使得盡可能多的活動能相容地使用公共資源。設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同...