有没有我可以用来解决以下问题的通用算法:
鉴于:
背景:一个月,有 0 到 1000 个事件(实际上是任何数字)。每个事件都有开始和结束日期。活动在房间内举行,一次一个(没有重叠,但是允许后续活动彼此共享结束和开始日期)。房间数量不受限制。
挑战:为活动分配房间,使举办每月活动所需的房间数量保持在最低限度。
虽然高度赞赏完整的解决方案,但我正在寻找任何方向,聪明的想法。
class Event:
- int Id;
- DateTime StartDate;
- DateTime EndDate
class Allocation:
- int EventId
- int RoomId
所以我正在寻找:
// roomIds is Enumerable.Range(1, int.MaxValue)
IEnumerable<Allocation> GetAllocations(IEnumerable<Event> events, IEnumerable<int> roomIds, int year, int month)
{
...
}