这是一道贪心类的题目。这道题首先要进行排序,找当前节目的开始时间小于等于上一节目的结束时间,然后找最早结束的且不与上一节目发生冲突的即可。看一下代码你就明白了。
struct sa{
int x;
int y;
}data[1000];
int cmp(const sa &a,const sa &b)
{
return a.y<b.y;
}
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&(n!=0))
{
for(int i=0; i<n; i++)
scanf("%d%d",&data[i].x,&data[i].y);
sort(data,data+n,cmp);
sa tmp;
int sum=1;
tmp=data[0];
for(int j=0;j<n;j++)
{
if(tmp.y<=data[j].x)
{
sum++;
tmp=data[j];
}
}
printf("%d\n",sum);
}
return 0;
}