贪心算法。

仅做学习记录,具体可参照  https://www.cnblogs.com/xsyfl/p/6938642.html   写的很好。

所谓贪心算法就是 在每一次的求解中 ,都使用最佳操作,这样所有步骤的求解 组合起来就是 全局的最优解。。

比如一个会议室如何最大利用。找零。

假设有n个会议要使用会议室,假设每个会议都有开始时间Sn 和  结束时间 Fn  . 必须满足其上一个会议的结束时间小于改会议的开始时间。

我们假定一个会议越早结束,那么后面我越能安排更多的会议。

所以先把所有会议按照结束时间排序 升序。

1. 第一个是最早结束的会议。

2. 找到开始时间小于第一步结束时间 , 且最早结束的会议。 

3. 依次求解, 组合起来即为最优解。

伪代码:

List<actvie> res ;  存放最优解

List<Active>  as  ; //会议集合

as.sort 按结束时间排序

res.add(as[0]) ;// 作为第一个最佳解

time = as[0].endtime   第一个元素的结束时间作为最早结束时间

for ( i = 1 ,i < as.length ; i++)

  if  as[i].startTime > time 

    res .add (as[i]) 

    time = as[i].endtime

 

posted on 2018-12-06 10:57  远方的人  阅读(116)  评论(0编辑  收藏  举报

导航