1. 程式人生 > >【貪心】線段

【貪心】線段

題目描述
數軸上有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;

}

題目挺簡單 就是注意陣列大小