思想:对节目结束的时间进行排序,用到sort,之后用前一个节目结束的时间与下一个节目开始的时间进行比较,如果下一个节目开始的时间大于上一个节目结束的时间,则完整的电视节目的个数就加一,如果不大于,就则两个节目时间就冲突了,就再跟下面的节目继续比较。
方法一:
#include<iostream>
using namespace std;
struct any
{
int a,b;
};
int main()
{
any c[105],v;
int d;
while(cin>>d&&d!=0)
{
int m=0,n,e=1;
for(int k=0;k<d;k++)
{
cin>>c[k].a>>c[k].b;
}
for(int i=0; i<d-1; i++)
{
for(int j=i+1; j<d; j++)
{
if(c[i].b>c[j].b)
{
v=c[i];
c[i]=c[j];
c[j]=v;
}
}
}
n=c[0].b;
for(int g=0;g<d;g++)
{
if(n<=c[g].a)
{
e++;
n=c[g].b;
}
}
cout<<e<<endl;
}
return 0;
}
方法二:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
struct info
{
int a;
int b;
}unit[103];
int cmd(info x,info y)
{
return x.b<y.b;
}
int main()
{
int n,i,j,k;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
for(i=0;i<n;i++)
{
scanf("%d%d",&unit[i].a,&unit[i].b);
}
sort(unit,unit+n,cmd);
j=0;
k=0;
for(i=1;i<n;i++)
{
if(unit[i].a>=unit[j].b) {
k++;
j=i;
}
}
printf("%d\n",k+1);
}
return 0;
}