分析:
1. 很多组结果,都在一个时间轴上,结束越早的越好。所以按照结束时间排序。
2.一步一步更新当前的时间,若谁的开始时间大于等于当前时间。更新当前时间为此节目的结束时间。计数加一。
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 typedef struct node 6 { 7 int s; 8 int e; 9 }node; 10 bool cmp(node a,node b) 11 { 12 return a.e<b.e; 13 } 14 node a[103]; 15 int main() 16 { 17 int n; 18 while(~scanf("%d",&n)&&n) 19 { 20 for(int i=0;i<n;i++) 21 { 22 scanf("%d%d",&a[i].s,&a[i].e); 23 } 24 sort(a,a+n,cmp); 25 26 int lasttime = -1; 27 int cnt = 0; 28 for(int i=0;i<n;i++) 29 { 30 if(a[i].s>=lasttime) 31 { 32 cnt++; 33 lasttime = a[i].e; 34 } 35 } 36 printf("%d ",cnt); 37 } 38 return 0; 39 }