解题思路:把每个时间段按照结束时间从小到大排列,如果结束时间相同则把开始时间按照从大到小排列。因为开始的时间越晚整个看电视的过程就比较短,多余的时间可以用来选择其他类型的节目,这样所看的节目就比较多了。

#include <cstdio>
#include <cstring>
#include<algorithm>
using namespace std;
struct AC{
    int start;
    int end; 
    bool operator < (const AC &b)const{
    if(end != b.end)
        return end < b.end;
    else 
        return start > b.start;
    }
}AC[200];
int main(){
    int n;
    while(scanf("%d",&n) != EOF && n != 0){
            for(int i = 0;i < n;i++){
                scanf("%d%d",&AC[i].start,&AC[i].end);
            }
            sort(AC,AC+n);
            int ans = 1,tmp = AC[0].end;
            for(int i = 1;i < n;i++){
                if(tmp <= AC[i].start){
                    ans++;
                    tmp = AC[i].end;
                }
            }
            printf("%d\n",ans);
    }
    return 0;
}