贪心算法--电影节(openjudge 4151 )

来源:互联网 发布:淘宝卖家贷款 编辑:程序博客网 时间:2024/05/17 08:52


总时间限制: 
1000ms 
内存限制: 
65536kB
描述
大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。
输入
多组数据。每组数据开头是n(n<=100),表示共n场电影。
接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间
n=0则数据结束
输出
对每组数据输出最多能看几部电影
样例输入
83 40 7 3 8 15 1915 2010 158 18 6 12 0
样例输出
3



#include <iostream>#include <cstdio>#include <algorithm>using namespace std;struct Film {    int f;    int e;};bool operator<(const Film & t,const Film & c)//重载操作符;{    if(t.e==c.e)        return t.f<c.f;    else        return t.e<c.e;}//12//1 3//3 4//0 7//3 8//15 19//15 20//10 15//8 18//6 12//5 10//4 14//2 9//0int main(){    Film film[1100];    int n;    while(scanf("%d",&n)&&n!=0){        for(int i = 0;i<1100;i++)            film[i].f = film[i].e = 0;        for(int i = 0;i < n; ++i)            scanf("%d%d", &film[i].f , &film[i].e);        sort(film,film+n);////        for(int i = 0;i<n;i++)//            cout <<film[i].f<<" "<<film[i].e<<endl;//        int total = 0;        int first =0;        for(int i = 0;i < n; ++i)            if( first<=film[i].f&&film[i].e <= film[n-1].e){                total++;                first = film[i].e;            }        printf("%d\n",total);    }    return 0;}


原创粉丝点击