这题有2个时间,分别是开始时间和结束时间,如果按照开始时间排序显然不行,那就得是按照结束时间排序了,至于为什么,就是i%^*^%$^##^#$&$。
然后还有个nowTime,排序后,如果当前时间小于开始时间的话,那么就可以观看该节目。
1 #include <stdio.h> 2 #include <iostream> 3 #include <algorithm> 4 using namespace std; 5 struct node 6 { 7 int begin,end; 8 }a[100+10]; 9 typedef struct node ob; 10 bool cmp(ob aa,ob bb) 11 { 12 return aa.end<bb.end; 13 } 14 int main() 15 { 16 int n,i,j,nowTime,res; 17 while(~scanf("%d",&n)&&n) 18 { 19 for(i=0;i<n;++i) 20 { 21 scanf("%d%d",&a[i].begin,&a[i].end); 22 } 23 sort(a,a+n,cmp); 24 nowTime=0; 25 res=0; 26 for(i=0;i<n;++i) 27 { 28 if(a[i].begin>=nowTime) 29 { 30 res++; 31 nowTime=a[i].end; 32 } 33 } 34 printf("%d\n",res); 35 } 36 return 0; 37 }