假设要在足够多的会场里安排一批活动,n个活动编号1~n,每个活动开始时间bI,结束时间ei,设计一个有效的贪心算法求出最少的会场个数
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAX 50
struct Active{
int no; //活动编号
int b; //开始时间
int e; //结束时间
bool operator<(const Active &s)const{ //重载关系函数
if(e==s.e) //结束时间相同按开始时间递增排序
return b<=s.b;
else //按结束时间递增排序
return e<=s.e;
}
};
int solve(Active* a,int n){
static int ans[MAX]; //ans[i]表示第a[i].no活动的编号
sort(a+1,a+n+1); //a[1...n]按指定方式排序
memset(ans,0,sizeof(ans)); //初始化为0
int num=1;
for(int i=1;i<=n;i++){
if(ans[i]==0){ //第i个活动会场没有分配
ans[i]=num; //分配第i个活动在num会场
in