问题分析:
会议/课程/任务调度问题也是典型的贪心策略问题。比如说,会议安排没有的事能在有限的时间内召开更多的会议。(任何两个会议不能同时进行)
算法设计:
- 初始化:将n个会议的开始事件、结束时间存放在结构体数组中,如果需要知道选中了哪些会议,还需要在结构体中增加会议编号,然后按结束时间从小到大排序,结束时间相等时,按开始事件从大到小排序。
- 根据岩心策略就是选择一个具有最早结束时间的会议,用last记录刚选中的结束时间。
- 选择第一个会议之后,依次从剩下未安排的会议中选择,如果会议i开始事件大于等于最后一个选中的会议的结束时间last,那么会议i与选中的会议相容,可以安排,更新last为刚才选中的会议的结束时间。否则,放弃i,检查下一个可以安排的会议
源代码:
#include <iostream> #include <algorithm> #include <cstdlib> #inc