*问题描述:假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效地贪心算法进行安排(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容的活动间用直线连接。使相邻点有着不同颜色的最小着色数,相应于要找的最小会场数)。
input. txt output. txt
5 3
1 23
12 28
25 35
27 80
36 50
解决这个问题的思路是:我需要得到最小的会场数,那么我最关心的的就是每个活动的开始时间,然后才是结束时间。为什么这样讲呢?因为贪心嘛就是要让每个会场安排尽可能多的活动,当我把开始时间按照非减序列排好后,我就可以可直观的判断当前的这个这个活动属于哪一个会场,并且由于是非减序列而达到“物尽其用”的目的,即每个会场安排尽可能多的活动场次。
这里假设开始时间是已经排好序的,那么接下来应该怎么处理呢?

本文介绍了一个利用贪心算法解决会场安排问题的方法,该问题实质上是图着色问题的变形。通过排序活动的开始时间,确保每个会场能安排最多的活动。算法首先按开始时间非减序排列,然后用一个变量记录已使用的会场数和每个会场最后安排的活动。通过循环检查新活动能否放入已有会场,从而找到最小会场数的解决方案。附有C语言实现代码。

1万+

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



