上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

C++区间覆盖(贪心算法)

guduadmin231月前

假设有n个区间,分别是:[l1,r1], [l2,r2], [l3,r3].....[ln,rn]

从这n个区间中选出某些区间,要求这些区间满足两两不相交,最多能选出多少个区间呢?

基本思路:

        按照右端点从小到大排序,再比较左端点与前面覆盖的区域。每次选择左端点与前面的已经覆盖的区间不重合而右端点又尽量小的区间,这样可以让剩下的未覆盖的区间尽可能的大,就可以放置更多的区间。

实现:

#include
using namespace std;
const int maxn = 1001;
struct range{
	int left;
	int right;
}a[maxn];
bool comp(range a, range b){
	if(a.right != b.right){
		return a.right < b.right;
	}
	return a.left < b.left;
}
int main(){
	
	int n;
	cout << "n=";
	cin >> n;
	for(int i=0;i      

网友评论

搜索
最新文章
热门文章
热门标签
 
 儿女双全梦见自己又怀孕了  已婚女人梦见自己打蛇  梦见游泳池的水干了是什么意思