程序员必备十大算法-贪心算法2-活动时间安排问题

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贪心算法中最经典的解决问题就是活动时间安排问题

整体思路是把活动时间结束早的先安排,把更多的时间空余出来安其他的活动
如果只是求解活动的安排数量,只需要简单的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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值