【贪心】线段

题目描述
数轴上有n条线段,选取其中k条线段使得这k条线段两两没有重合部分,问k最大为多少。

输入
第一行为一个正整数n;
在接下来的n行中,每行有2个数ai,bi,描述每条线段。

输出
输出一个整数,为k的最大值。

样例输入

3
0 2
2 4
1 3

样例输出

2

提示

对于20%的数据,n≤10;
对于50%的数据,n≤103;
对于70%的数据,n≤105;
对于100%的数据,n≤106,0≤ai<bi≤106。

#include
#include
#include
#include
using namespace std;
struct number
{
int srart;
int end;
}num[1000006];
bool comp(number a, number b)
{
return a.end<b.end;
}
int main()
{
int n,i,j,count,k;
scanf("%d",&n);
if(n==0)
return 0;
count=1;
for(i=0;i<n;i++)
scanf("%d%d",&num[i].srart,&num[i].end);
sort(num,num+n,comp);
i=0;
j=1;
while(j<n)
{
if(num[j].srart>=num[i].end)
{
count++;
i=j;
}
j++;
}
printf("%d\n",count);

return 0;

}

题目挺简单 就是注意数组大小

猜你喜欢

转载自blog.csdn.net/qq_43851106/article/details/84969608