【发布时间】:2014-11-22 02:08:42
【问题描述】:
我正在尝试找到反向交叉点,看看两支球队是否可以互相比赛,但很难找出准确的代码来做到这一点。
表示以下范围的类将包含两个属性,开始时间和结束时间,可以是日期时间或时间跨度。每个团队都可以拥有这些列表。时间跨度属性下降到分钟,因此下午 2:21 有效。
第 1 队无法在所列的这两个时间段之间进行比赛,因此他们只能在上午 10:00 到下午 5:00 之间进行比赛。我们存储排除项。
第 2 队可以打 8:00 AN -12:00 PM。
意思是 Team 1 和 Team 2 可以在 10-12 之间进行比赛。有没有好办法在代码中计算出来?
第 1 队
List<Restriction>
Restriction
StartTime: 8:00 AM
EndTime: 10:00 AM
Restriction
StartTime: 5:00 PM
EndTime: 9:00 PM
第 2 队
List<Restriction>
Restriction
StartTime: 12:00 PM
EndTime: 9:00 PM
【问题讨论】:
-
对不起,我对时间表示法感到困惑。
-
只是在这里大声输入,但我认为您可以将一天中的所有时间转换为字节数组中的位,其中可播放时间为 1,然后在团队之间进行 AND 操作。最重要的是他们可以互相比赛。
-
如果您将您的时间转换为他们可以玩的时间(即使是暂时的),然后将其转换为可用时间的集合,它会变成一个交叉点而不是反向交叉点。
-
我喜欢位比较的想法,但如果你能精确到分钟呢。
标签: c# algorithm intersection intercept computation