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

总时间限制: 
1000ms 
内存限制: 
65536kB
描述
大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。
输入
多组数据。每组数据开头是n(n<=100),表示共n场电影。

接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间

n=0则数据结束

输出
对每组数据输出最多能看几部电影
样例输入
8
3 4
0 7 
3 8 
15 19
15 20
10 15
8 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
//0



int 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;
}
    原文作者:贪心算法
    原文地址: https://blog.csdn.net/Randyhe_/article/details/78639748
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞