算法找到至少一个调度排列?

时间:2013-09-23 00:16:23

标签: java android algorithm

我有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,
  7. 该算法将返回: 步行狗(早上8点),然后练习java(上午8:30),然后练习吉他(上午11:30),然后参加烹饪班(下午12:30),然后小睡(下午1:20),然后和朋友一起看电影(2 :50微米)

    谢谢

1 个答案:

答案 0 :(得分:0)

蛮力最简单。对于您列出的示例,有32种可能的安排:2x1x2x2x4x1。只需遍历所有这些。您需要一种数据结构,允许您表示给定的特定计划选择,并检查计划中约会之间的时间重叠。 “约会”列表(但是你想表示那个;数组,字典,等等)会做到这一点。按照约会开始的时间顺序对列表进行排序,然后检查每个列表以查看它是否与下一个碰撞。 [编辑细节,清晰度]