0

我有 n 个任务,每个任务都有几个可能的开始时间和 1 个持续时间。如果可能的话,我想为这 n 个任务找到至少一个时间表。我正在尝试构建一个移动应用程序只是为了学习android,所以算法效率并不那么重要。我希望它易于理解。这是一个例子:

  1. 参加烹饪课(50 分钟):上午 8 点,下午 12:30
  2. 和朋友一起看电影(2 小时):下午 2:50
  3. 遛狗(30 分钟):上午 8 点、上午 9 点
  4. 午睡(1.5 小时):下午 1:20、下午 4:30
  5. 练习java(3小时):上午8:30,上午11:30,下午2点,下午5点
  6. 练习吉他(1 小时):上午 11:30,

算法会返回:遛狗(8am),然后练习java(8:30am),然后练习吉他(11:30am),然后上烹饪课(12:30pm),然后小睡(1:20pm),然后看和朋友一起看电影(下午 2 点 50 分)。

谢谢

4

1 回答 1

0

蛮力是最简单的。对于您列出的示例,有 32 种可能的排列方式:2x1x2x2x4x1。只需遍历所有这些。您需要一个数据结构,允许您表示给定的特定日程选择,并检查日程中约会之间的时间重叠。一个“约会”列表(无论如何你想表示它;数组、字典等)就可以了。按约会开始的时间顺序对列表进行排序,然后检查每个列表是否与下一个发生冲突。[编辑细节,清晰]

于 2013-09-23T00:34:51.503 回答