http://poj.org/problem?id=1089
# include<iostream>
# include<algorithm>
using namespace std;
# define N 50003
# define M 1000003
struct INTERVAL
{
int s,e;
};
int cmp(INTERVAL a, INTERVAL b)
{
return a.s<b.s;
}
INTERVAL interval[N];
int main()
{
int n,i,s,e;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>interval[i].s>>interval[i].e;
}
sort(interval+1,interval+1+n,cmp); //根据起点排序
//for(i=1;i<=n;i++)
//{
// cout<<interval[i].s<<interval[i].e;
//}
s=interval[1].s;
e=interval[1].e;
for(i=2;i<=n;i++)
{
if(interval[i].s>e)
{
cout<<s<<" "<<e<<endl;
s=interval[i].s;
e=interval[i].e;
}
else
{
if(interval[i].e>e)
{
e=interval[i].e;
}
else
{
//do nothing
}
}
}
cout<<s<<" "<<e<<endl; //输出最后一个区间
return 0;
}
本文介绍了一个区间合并算法的实现,该算法通过将输入的一系列区间按起点排序后进行合并,输出不相交的区间集合。主要步骤包括读取区间数据、排序及合并区间。


被折叠的 条评论
为什么被折叠?



