整数区间

来源:互联网 发布:域名邮箱反查询 编辑:程序博客网 时间:2024/06/04 17:50

Problem Description

请编程完成以下任务:   
1.从文件中读取闭区间的个数及它们的描述;   
2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。

Input

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

Output

对于每组数据找到对于每一个区间都至少有一个整数属于该区间,且集合所包含元素数目最少,输出该集合的元素个数。

Sample Input

43 62 40 24 7

Sample Output

2
//此题与活动选择的解法一样 #include<iostream>#include<cstdio>using namespace std;int c[10010];struct input{int x,y;}a[10010];int main(){//freopen("a.txt","r",stdin);int n,i,j,max,t;while(scanf("%d",&n)!=EOF){max=0;for(i=1;i<=n;i++){scanf("%d %d",&a[i].x,&a[i].y);c[i]=1;}for(i=1;i<n;i++) for(j=i+1;j<=n;j++)  if(a[i].x>a[j].x)  { t=a[i].x; a[i].x=a[j].x; a[j].x=t; t=a[i].y; a[i].y=a[j].y; a[j].y=t;  }for(i=2;i<=n;i++) for(j=1;j<i;j++) if(a[j].y<a[i].x&&c[i]<c[j]+1) c[i]=c[j]+1;for(i=1;i<=n;i++) if(max<c[i]) max=c[i];printf("%d\n",max);}return 0;}


0 0