1.问题
相容问题:有一个礼堂需要用于举办活动,每个活动有开始时间与结束时间;如果任何两个活动不能在礼堂中同时进行,问如何选择这些活动,使得能在礼堂中安排最多活动
2.解析

3.设计
void greedy(struct A* a,int n,int ap[]){
sort(a+1,a+1+n,cmp);
ap[1]=1;
int j=1;//记录最新纳入计划的活动的序号
int count=1;//记录有几个活动纳入计划
for(int i=2;i<=n;i++){
if(a[i].s>=a[j].e){//若当前活动与已纳入的最新活动兼容,则纳入计划
ap[++count]=i;
j=i;
}
}
for(int i=1;i<=count;i++){
printf("%d ",ap[i]);
}
printf("\n");
}
4.分析
O(nlogn)
本文介绍了一种解决礼堂活动调度问题的贪心算法,通过排序和比较活动的结束时间来最大化可安排的活动数量。算法的时间复杂度为O(nlogn),适用于需要高效安排多个不可重叠事件的场景。
970

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



