贪心算法—“看电影”

Posted 算法零基础学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心算法—“看电影”相关的知识,希望对你有一定的参考价值。

贪心算法:

电影院放了许多部电影,给定每部电影的放映时间区间,区间重复的电影不能同时看(端点可以重合),问最多可以看多少部电影。

输入数据:

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

输出 5

贪心策略:

看一部电影使得剩下播放电影的时间最长,且播放的时间不会冲突。

1 将所有电影按照结束时间从小到大排序。

2选择结束时间最早的那部电影,每步选和上一次选择的电影不冲突 且束时间最早的电影

#include<iostream>

#include<algorithm>

#include<cstdio>

using namespace std;

double eps=1e-6;

struct Film{

int s,f;

}Films[110];

struct FilmRules{

bool operator() (const Film & a1,const Film & a2){

    return  a1.f - a2.f<0;

}

};

int main(){

    int n;

    scanf("%d",&n);

    for(int i=0;i<n;i++)

    scanf("%d%d",&Films[i].s,&Films[i].f);

    sort(Films,Films+n,FilmRules());

    int cnt =1;

    int j=0;

    for(int i=1;i<n-1;i++){

        if(Films[j].f<=Films[i].s){

                cnt++;

                j=i;

            }

    }

    printf("%d",cnt);

    return 0;

}


以上是关于贪心算法—“看电影”的主要内容,如果未能解决你的问题,请参考以下文章

算法| 贪心算法:如何用贪心算法实现Huffman压缩编码?

程序员算法基础——贪心算法

贪心思想

算法基础--贪心算法

贪心算法学习,附由贪心算法引发的人生感悟。

算法贪心算法(0-1背包问题)