现在的位置: 首页 > 综合 > 正文

贪心算法

2013年04月22日 ⁄ 综合 ⁄ 共 716字 ⁄ 字号 评论关闭
/*
贪心算法:

例子1.活动选择问题:
	问题描述:一系列活动<a1,a2,...,an>,对于其中的活动ai来说的话对应的起始和终止的时间段<si,fi>求的是对于这些活动如果按照结束时间的升序列
进行排序的话,求的让活动出现兼容的最大活动;
	定义某一个集合S[i,j]表示的是存在一个活动ak使得下面式子满足{si<=sk<fk<=fj},那么的话存在的是下面的情况。相应情况见书本;
*/

#include <iostream>
#include <vector>
using namespace std;
struct range
{
	int start;
	int end;
	range(int s,int e):start(s),end(e){}

};

ostream& operator<<(ostream os,range b)
{
	os<<b.start<<" "<<b.end<<"   ";
	return os;
}

struct A
{
	vector<range> vec,vec1;
	int num;
	A(int n):num(n)
	{

	}
	void select(int i,int n)
	{
		int m=i+1;
		while (m<=n&&vec[i].end>vec[m].start)
		{
			m++;
		}
		if (m<=n)
		{
			cout<<vec[m]<<endl;;
			select(m,n);
			return ;
		}
	}
	void init()
	{
		for (int i=0;i<=num;++i)
		{
			int key,value;
			cin>>key>>value;
			vec.push_back(range(key,value));
		}
	}
};


int main()
{
	int n;
	cin>>n;
	A a(n);
	a.init();
	a.select(0,n);
	return 0;
}

抱歉!评论已关闭.