http://acm.hdu.edu.cn/showproblem.php?pid=2037
对于这个问题呢 首先我们要排列按结束的时间把所有的时间段都排列好。
然后从头开始 如果下一个的开始时间大于等于这个的结束时间 说明下一个在这个里面。 则 这个节目要看
#include<iostream>
using namespace std;
struct time{
int st;
int ed;};
time t[100];
int main()
{
int n,sum,max;
time h;
while(cin>>n,n)
{
sum=0;
for(int i=0;i<n;i++)
{
cin>>t[i].st>>t[i].ed;
}
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(t[i].ed>t[j].ed)
{
h=t[j];
t[j]=t[i];
t[i]=h;
}
}
}
max=0;
for(int i=0;i<n;i++)
if(t[i].st>=max)
{
sum++;
max=t[i].ed;
}
cout<<sum<<endl;
}
return 0;
}