hdu2037 今年暑假不AC (简单贪心)

题意:每个节目有开始时间和结束时间,求最多能看多少个节目


分析:以结束时间进行排序。


#include<stdio.h>
#include<algorithm>
using namespace std;

struct tt{   //这里我写成time,过不了编译,改成了tt
    int sta;
    int end;
}tim[110];

bool cmp(tt a,tt b){
     if(a.end!=b.end)  return a.end<b.end;
     return a.sta<b.sta;
}

int main(){
    int n;
    while(scanf("%d",&n)!=EOF &&n){
        for(int i=0;i<n;i++)
            scanf("%d%d",&tim[i].sta,&tim[i].end);
        sort(tim,tim+n,cmp);
        int e=tim[0].end;//观看第一个节目
        int tot=1;//观看的总个数

        for(int i=1;i<n;i++){
            if(tim[i].sta>=e){
                tot++;
                e=tim[i].end;
            }
        }

        printf("%d\n",tot);
    }
    return 0;
}


你可能感兴趣的:(hdu2037 今年暑假不AC (简单贪心))