Hdu 2037
解题思路:
1:按照结束时间从小到大排序。
2:记录排序后第一个结束节目的时间 j 。
3:从第二个节目开始,如果该节目开始时间比 j 大或相等,则sum++;并把此节目的结束时间赋值给 j 。
4:重复这个步骤,直到遍历完所有数据。
代码:
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<algorithm>
using namespace std;
struct arr{
int a;
int b;
}t[105];
bool cmp(arr x,arr y)
{
return x.b<y.b;//按结束时间拍序
}
int main (){
int i,n,j,sum=1;
while(scanf("%d",&n)&&n){
for(i=0;i<n;i++){
cin>>t[i].a>>t[i].b;
}
sort(t,t+n,cmp);
j=t[0].b;
for(i=1;i<n;i++){
if(t[i].a>=j){
sum++;
j=t[i].b;
}
}
printf("%d\n",sum);
sum=1;
}
return 0;
}