用贪心的算法算,从最左端开始,所以在计算之前要排一下序,一旦遇到这一段的左端点小于上一段的右端点,这段就去掉,还有,这种线段的描述用pair非常方便,记得以前什么时候翁聚曾经给普及过这个,详细介绍:c++之pair
代码在这:
#include <bits/stdc++.h>
using namespace std;
int main()
{
pair<int,int>p[1010];
int n;
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%d%d",&p[i].second,&p[i].first);
if(p[i].second>p[i].first) swap(p[i].first,p[i].second);
}
sort(p,p+n);
int s=-1000000,sum=0;
for(int i=0;i<n;++i)
{
if(p[i].second<s) continue;
s=p[i].first;
sum++;
}
printf("%d\n",sum);
return 0;
}