-->
当前位置:首页 > 题库 > 正文内容

程序填空题:求解活动安排问题(贪心法)

Luz4年前 (2021-06-19)题库1678
假设有一个需要使用某一资源的n个活动所组成的集合S,S={1,…,n}。该资源任何时刻只能被一个活动所占用,活动i有一个开始时间bi和结束时间ei(bi
#include 
#include 
#include 
using namespace std;
#define MAX 51
//问题表示
struct Action
{	int b;						//活动起始时间
	int e;						//活动结束时间
	bool operator<(const Action &s) const	//重载<关系函数
	{
		return e<=s.e;			//用于按活动结束时间递增排序
	}
};

int n;
Action A[MAX];	
bool flag[MAX];					//标记选择的活动
int Count=0;					//选取的兼容活动个数

void solve()					//求解最大兼容活动子集
{
	memset(flag,0,sizeof(flag));//初始化为false
	sort(A,A+n);			//A[1..n]按活动结束时间递增排序
	int preend=0;				//前一个兼容活动的结束时间
	for (int i=0;i>n;
	for (int i=0;i>A[i].b>>A[i].e;
	solve();
	for (int i=0;i
答案: 第1空:A[i].b>=preend 第2空:flag[i]=true 第3空:preend=A[i].e


发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。