题目地址:点击
思路:
每次选择结束时间最早的,意味着会有更多的时间进行选择。
代码:
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef struct{
int begin;
int end;
}program;
bool cmp(program a,program b){
return a.end<b.end;
}
int main(){
int n;
program p[100];
while(cin>>n){
if(n==0)
break;
for(int i=0;i<n;i++){
cin>>p[i].begin>>p[i].end;
}
sort(p,p+n,cmp);
int k=1,last=p[0].end;
for(int i=1;i<n;i++){
if(p[i].begin>=last){ //每次的节目的开始时间不能越过上个节目的结束时间
k++;
last=p[i].end;
}
}
cout<<k<<endl;
}
return 0;
}