2013-09-23 28 views
0

我有n個任務,每個都有幾個可能的開始時間和1個持續時間。如果可能的話,我想爲n個任務找到至少一個時間表。我正在嘗試構建一個移動應用來學習android,所以算法效率並不那麼重要。儘管如此,我希望它很容易理解。這裏有一個例子:算法找到至少一個時間表排列?

  1. 。參加烹飪課(50分鐘):上午8:00,下午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:00,下午5點
  6. 練習吉他(1個小時):11 :30am,

算法會返回: 步行狗(8am),然後練習java(早上8:30),然後練習吉他(上午11:30),然後參加烹飪課(12:30 pm),然後午睡(1:20 pm),然後和朋友一起看電影(2:50 pm)。

謝謝

+0

您是否試圖自行研究此類算法? – Szymon

回答

0

蠻力是最簡單的。對於你列舉的例子,有32種可能的安排:2x1x2x2x4x1。只需遍歷所有這些。您需要一個數據結構,使您能夠表示給定的具體日程安排選項,並檢查日程安排中約會之間的時間重疊。 「約會」(不管你想表示那個;數組,字典,不管)都可以。按照約會開始的時間順序排序列表,然後檢查每個列表是否與下一個列表相沖突。 [編輯詳細,清晰度]

+0

32安排?交疊?請詳細說明。 –

+0

@HukeLau_DABA他做了精心設計 - 32 = 2x1x2x2x4x1。他還以另一種方式解釋了這一點 - 「只是遍歷所有這些。」 – mbeckish

相關問題