Problem Description
请编程完成以下任务:
1.从文件中读取闭区间的个数及它们的描述;
2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。
1.从文件中读取闭区间的个数及它们的描述;
2.找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。
Input
输入有多组数据,每组数据的首行包括区间的数目n,1<=n<=10000,接下来的n行,每行包括两个整数a,b,被一空格隔开,0<=a<=b<=10000,它们是某一个区间的开始值和结束值。
Output
对于每组数据找到对于每一个区间都至少有一个整数属于该区间,且集合所包含元素数目最少,输出该集合的元素个数。
Sample Input
4 3 6 2 4 0 2 4 7
Sample Output
2
// 题目意思:求有多少个不相交的区间 #include<iostream> #include<algorithm> using namespace std; struct td { int a; int b; } st[1005]; bool cmp( td x, td y) { if(x.b != y.b) return x.b < y.b; else return x.a < y.a; } int main() { int n, i, sum = 0, t; while(cin >> n) { sum = 0; for(i = 0; i < n; i++) cin >> st[i].a >> st[i].b; sort(st, st + n, cmp); for(i = 0, t = -1; i < n; i++) { if(t >= st[i].a) continue; // 如果x在该区间内,就跳过(相交) sum++; t = st[i].b; } cout << sum << endl; } return 0; }