hdu-2037 今年暑假不AC(貪心)

題目鏈接http://acm.hdu.edu.cn/showproblem.php?pid=2037

題意:給出多個節目起始和結束時間,輸出最多能看多少個節目

題解:貪心算法題目的關鍵點在於選擇合適的貪心策略,這個題目的貪心策略是每次找結束時間最早的節目,當然節目的開始時間要大於當前時間。

AC代碼

#include"algorithm"
using namespace std;
typedef struct Tv{
    int start;
    int end;
};
bool cmp(Tv a,Tv b){
    if(a.end<b.end)    return true;
    else if(a.end == b.end && a.start<b.start)    return true;
    return false;
}
int main(int argc, char** argv) {
    int n;
    while(cin>>n&&n!=0){
        Tv tv[105];
        for(int i = 0;i<n;i++)
            cin>>tv[i].start>>tv[i].end;
        sort(tv,tv+n,cmp);
        int sum = 0;
        int now = 0;
        int i = 0;
        while(i<n){
            if(tv[i].start >= now){
                now = tv[i].end;
                sum++;
                i++;
            }else{
                i++;
            }
        }
        cout<<sum<<endl;
    }
    return 0;
}

小結:找到了對的貪心策略就沒問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章