问题 F: 【例6.6】整数区间

题目描述

请编程完成以下任务:

1.从文件中读取闭区间的个数及它们的描述;

2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。

输入

首行包括区间的数目n,1≤n≤10000,接下来的n行,每行包括两个整数a,b,被一空格隔开,0≤a≤b≤10000,它们是某一个区间的开始值和结束值。

输出

第一行集合元素的个数,对于每一个区间都至少有一个整数属于该区间,且集合所包含元素数目最少。

样例输入

4
3 6
2 4
0 2

4 7

样例输出

2



#include <iostream>
using namespace std;
struct jihe
{
int s,e;
}a[1000];
int main ()
{
int n,num=1,h;
cin>>n;
for (int i=0;i<n;i++)
cin>>a[i].s>>a[i].e;
for (int i=0;i<n-1;i++)
for (int j=0;j<n-1-i;j++)
{
if (a[j].e>a[j+1].e) swap(a[j],a[j+1]);
else if (a[j].e==a[j+1].e) {if (a[j].s>a[j+1].s) swap(a[j],a[j+1]);}
}
h=a[0].e;
for (int i=1;i<=n;i++)
if (a[i].s>h) {num++;h=a[i].e;}
cout<<num<<endl;
  return 0;
}

猜你喜欢

转载自blog.csdn.net/tiantianac/article/details/79692153
今日推荐