数轴 上有n个区间,选出最多的区间,使得这些区间不互相重叠。
将所有区间按右端点坐标从小到大排序,顺序处理每个区间。如果它与当前已选的所有区间都没有重叠,则选择该区间,否则不选。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
class T
{
public:
int l,r;
}a[110];
bool cmp(T a,T b)
{
return a.r<b.r;
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
for(int i=0;i<n;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
}
sort(a,a+n,cmp);
int counter=1;
int ll=a[0].r;
for(int i=1;i<n;i++)
{
if(a[i].l>=ll)
{
counter++;
ll=a[i].r;
}
}
printf("%d\n",counter);
}
return 0;
}