贪心算法中最经典的解决问题就是活动时间安排问题
整体思路是把活动时间结束早的先安排,把更多的时间空余出来安其他的活动
如果只是求解活动的安排数量,只需要简单的sort排序就好return x.end<y.end;
且在结构体struct node 中不必加入int plan;
但是有的题目中要求解活动安排顺序,那就加入int plan;目的是为了标注是否被选中
如果还要纠结是否时间覆盖最长,那么对排序就要严格,同时结束的活动,开始时间早的排在前面,同时开始活动的,结束时间晚的排在前面
bool up(node x,node y)
{
if(x.end==y.end) //结束时间一样的话,先安排开始时间早的那个活动,保证用时最长
return x.begin<y.begin;
else if(x.begin==y.begin)
return x.end>y.end;
else
return x.end<y.end;
}
首先对排好的结构体,第一个位置必须是满足条件的活动,直接安排他
film[1].plan=1;//第一个活动肯定是安排的上的,直接标记它
int n=1;
sum=1;time=film[1].end-film[1

本文介绍了贪心算法在解决活动时间安排问题中的应用,强调先结束的活动优先安排,以最大化活动数量。对于需要考虑活动顺序和时间覆盖的情况,需要更严格的排序规则。通过实例展示贪心算法的执行过程,并提供了联系方式以获取更多帮助。
最低0.47元/天 解锁文章

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



