简单贪心策略,先对数组排序(无排序,不贪心),然后找出最优方案即可
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct Program{
int startTime;
int endTime;
};
const int MAXN = 1000;
Program arr[MAXN];
bool Compare(Program x, Program y){
return x.endTime < y.endTime;
}
int main(int argc, char** argv) {
int n;
while(scanf("%d", &n) != EOF){
if(n == 0){
break;
}
for(int i = 0; i < n; i++){
cin >> arr[i].startTime >> arr[i].endTime;
}
sort(arr, arr + n, Compare); //按结束时间升序排序
int currentTime = 0; //设置当前时间
int answer = 0;
for(int i = 0; i < n; i++){
if(currentTime <= arr[i].startTime){
currentTime = arr[i].endTime;
answer++;
}
}
cout << answer << endl;
}
return 0;
}