1、活动安排问题
问题:有若干个活动,第i个开始时间和结束时间是[Si,fi),只有一个教室,活动之间不能交叠,求最多安排多少个活动?
解题思路:将活动按照结束时间进行从小到大排序,挑选出结束时间尽量早的活动,并且满足后一个活动的起始时间晚于前一个活动的结束时间,全部找出这些活动就是最大的相容活动子集合。
C代码示例:
正确性证明:我们可以从贪心算法得到的结果集仅进行倒推。首先去掉结果集中的第一个活动A,那么在剩下的活动中,结束时间最早的活动B的结束时间一定不早于A,那么A活动在最优解中一定合理。再用同样的方式判断活动B,依次类推,则结果集就是最优解。
2、最小延迟问题
问题:顾客在饭店中点餐,ti 表示i顾客所有菜加工的时间,di 表示i顾客要求菜全部完成的时间。如果实际完成的时间小于规定完成时间,那么就没有延迟。由于有很多顾客,所以会有很多不同的拖