0
已解决
4217 合并区间 经验值:800
题目描述 Description
给出一个区间的集合,请合并所有重叠的区间。
输入描述 Input Description
第一行,一个整数n
接下来n行, 每行两个整数,x y,表示一个区间(x, y)
输出描述 Output Description
合并之后的所有区间,每行一个。按左端点从小到大排序
样例输入 Sample Input
4 1 3 2 6 8 10 15 18
样例输出 Sample Output
1 6 8 10 15 18
数据范围及提示 Data Size & Hint
10≤n≤1000
//CODE
//#pragma GCC optimize(3)
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct qj {
int s, e;
}a[1005];
int n;
int end, start;
bool cmp (qj x, qj y) {
return x.s < y.s;
}
int main() {
// freopen ("题目名.in", "r", stdin);
// freopen ("题目名.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i ++) {
cin >> a[i].s >> a[i].e;
}
sort (a + 1, a + n + 1, cmp);
start = a[1].s;
end = a[1].e;
for (int i = 2; i <= n; i ++) {
if (a[i].s <= end) {
if (a[i].e > end) {
end = a[i].e;
}
else {
cout << start << ' ' << end << endl;
start = a[i].s;
end = a[i].e;
}
}
}
// fclose (stdin);
// fclose (stdout);
return 0;//好习惯!
}
求各位dalao找错!!
张恩泽在2020-11-07 12:32:23追加了内容
ding!
张恩泽在2020-11-07 12:41:21追加了内容
//CODE
//#pragma GCC optimize(3)
//#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct qj {
int s, e;
bool b;
}a[1005];
int n;
int end, start;
bool cmp (qj x, qj y) {
return x.s < y.s;
}
int main() {
// freopen ("题目名.in", "r", stdin);
// freopen ("题目名.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i ++) {
cin >> a[i].s >> a[i].e;
a[i].b = true;
}
for (int i = 2; i <= n; i ++) {
if(a[i].s <= a[i-1].e && (a[i].e >= a[i-1].e || a[i-1].e >= a[i].e)) {
a[i].s = a[i-1].s;
a[i].e = max(a[i].e, a[i-1].e);
a[i-1].b = false;
}
}
for (int i = 1; i <= n; i ++) {
if (a[i].b == true)
cout << a[i].s << ' ' << a[i].e << endl;
}
// fclose (stdin);
// fclose (stdout);
return 0;//好习惯!
}
样例过了,但还是0分
