贪心算法—“看电影”
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;
}
以上是关于贪心算法—“看电影”的主要内容,如果未能解决你的问题,请参考以下文章