题目链接:https://cn.vjudge.net/problem/OpenJ_Bailian-4151
思路: 很简单的贪心,按结束时间从小到大排序,先看结束时间早的。证明略~
AC代码:
#include <iostream>
#include <algorithm>
using namespace std;
struct Movie {
int s,e;
bool operator < (const Movie &t) {
return e < t.e;
}
}Movies[101];
int main()
{
int n;
int sum;
while(cin >> n && n!=0) {
for(int i=1;i<=n;i++)
cin >> Movies[i].s >> Movies[i].e;
sort(Movies+1,Movies+n+1);
sum = 0;
int end = Movies[1].e;
sum++;
for(int i=2;i<=n;i++) {
if(Movies[i].s >= end) {
sum++;
end = Movies[i].e;
}
}
cout << sum << endl;
}
}