此题略水。。
典型的贪心法;
按照结束时间的大小排序,升序排列。
遍历后面的值,若结束时间早于其开始时间,则满足条件,重新赋值给begin;
若不满足条件,则跳过。
AC代码如下:
#include <stdio.h>
struct node
{
int a,b;
};
int main()
{
int t,n,i,j;
struct node s[110],temp;
while(~scanf("%d",&n)&&n)
{
for(i=0;i<n;i++)
{
scanf("%d%d",&s[i].a,&s[i].b);
}
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(s[j].b>s[j+1].b)
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
int count1=0;
int i=1;
int begin=s[0].b;
while(i<n)
{
if(s[i].a>=begin)
{
begin=s[i].b;
count1++;
i++;
}
else
{
i++;
}
}
printf("%d\n",count1+1);
}
return 0;
}