Java 查找至少一个调度排列的算法?

Java 查找至少一个调度排列的算法?,java,android,algorithm,Java,Android,Algorithm,我有n个任务,每个任务都有几个可能的开始时间和1个持续时间。如果可能,我想为n个任务找到至少一个计划。我正试图构建一个移动应用程序来学习android,所以算法效率并不是那么重要。不过我希望它容易理解。下面是一个例子: 参加烹饪课(50分钟):上午8点,下午12:30 与朋友看电影(2小时):下午2:50 遛狗(30分钟):上午8点、上午9点 午睡(1.5小时):下午1:20、4:30 练习爪哇语(3小时):上午8:30、11:30、下午2点、下午5点 练习吉他(1小时):上午11:30 算法将

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

  • 参加烹饪课(50分钟):上午8点,下午12:30
  • 与朋友看电影(2小时):下午2:50
  • 遛狗(30分钟):上午8点、上午9点
  • 午睡(1.5小时):下午1:20、4:30
  • 练习爪哇语(3小时):上午8:30、11:30、下午2点、下午5点
  • 练习吉他(1小时):上午11:30
  • 算法将返回: 遛狗(上午8点),然后练习爪哇(上午8点30分),然后练习吉他(上午11点30分),然后参加烹饪课(下午12点30分),然后小睡(下午1点20分),然后和朋友一起看电影(下午2点50分)


    谢谢

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

    您自己是否尝试过研究这种算法?32种安排?重叠请详细说明。@HukeLau_DABA他详细说明了-32=2x1x2x2xx4x1。他还以另一种方式解释了这一点——“只需遍历所有这些内容。”