貪心演算法就是只要滿足我當前利益最大化即可,所以有時候得出的結果不是最優解。一般使用貪心演算法要滿足兩個條件:a.貪心選擇性質。b.最優子結構性質。
貪心選擇性質:這是貪心演算法與動態規劃的區別。也就是說,我通過區域性的最優來達到整體的最優。動態規劃一般是以「自底向上的方式解決問題(如數塔問題)」,而貪心是以「自上向下的方式解決問題(如hdu2037(活動安排)「。
最優子結構性質:這個性質是貪心和動規的共同點。也就是乙個問題的最優解要包含其子問題的最優解。
在用貪心演算法的時候關鍵在於:
1.如何證明每一步所做的貪心選擇,最終可以使最後結果最優。
2.如何制定可行的貪心策略。
hdu2037(活動安排)是乙個典型的貪心演算法。你只要每一步都選著占用時間最小的同時要使剩餘時間最大的,也就是說,每回你都要找乙個結束最早的。當你找到第乙個後,一定要使剩餘的時間最長,以後每選乙個都要考慮這個問題。這樣你每一步都最優的話,結果也是最優的,你可以用反證法證明。
具體做法就是先按結束的時間進行公升序排序,然後每次取最小的,但是要保證和前面你取的那個沒有衝突。
#include #include #include #include using namespace std;
const int n = 105;
struct node t[n];
bool cmp(const node a, const node b)
int main()
sort(t, t+n, cmp);
int k = 0, cnt = 1;
for(int i = 1; i < n; i++)
}printf("%d\n", cnt);
}return 0;
}
HDU 2037 今年暑假不AC
題目 hdu 2037 今年暑假不ac 解題思路 簡單貪心 對節目時間的結束時間由小到大進行排序,排序用sort或者qsort都可以,讓結束的早的時間排在前面,為後面的節目留出充足的時間,只要下乙個節目的的開始時間大於等於上乙個節目的結束時間就可以了。include includestruct ac...
HDU 2037 今年暑假不AC
problem description 今年暑假不ac?是的。那你幹什麼呢?看世界盃呀,笨蛋!確實如此,世界盃來了,球迷的節日也來了,估計很多acmer也會拋開電腦,奔向電視了。作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播 永遠不要忘記關心...
HDU 2037 今年暑假不AC
description 今年暑假不ac?是的。那你幹什麼呢?看世界盃呀,笨蛋!確實如此,世界盃來了,球迷的節日也來了,估計很多acmer也會拋開電腦,奔向電視了。作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播 永遠不要忘記關心國家大事 非常6...