[問題] 時間比較

看板Prob_Solve作者 (懂的付出才會幸福)時間11年前 (2012/09/06 21:51), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
問題 有n個排程 每個排程有 start time(HH:MM:SS) 跟 interval 例如 排程一 start_time = 0:01:30 interval = 00:00:30 那 0:00:00 0:00:30 0:01:00 0:01:30 ... 23:59:30 皆屬於排程一 排程二 start_time = 0:00:10 interval = 3:30:00 那 0:00:10 3:30:10 7:00:10 10:30:10 14:00:10 ... 21:30:10 皆屬於排程二 雖然21:30:10 + 3:30:00 = 25:00:10 % 24:00:00 = 1:00:10 但 超過一天應該算用 0:00:10 要檢查各個排程會不會相衝途 ----------------------------------------------------------- 目前想到的解法 一天有 60x60x24 = 86400秒 把排程一想成 start_time = 90 interval = 30 0 30 60 90 ... 86370 皆屬於排程一 A1 A2 A3 A4 An 把排程二想成 start_time = 10 interval = 12600 那 10 12610 25210 ... 77410 皆屬於排程二 B1 B2 B3 Bn 要逐一比較 A1~An B1~Bn有無相等 先找 30 跟 12600的最小公倍數 = 12600 就比較 90+(30x0) ~ 90+(30x420) 是否有跟 10+(12600x0) ~ 10+(12600x1) 相等 --------------------------------------------------------------------- 本來有想另一個 開一個大array 可以存86400 bit (2700-btye) 把每一排程所占據的時間設起來 (set to 1) 但這樣無法得知相衝途的排程是那兩個 故只好兩兩作比較 請問 是否有其它解決辦法? 或提供想法 謝謝 -- 用程式語言c解 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.124.249

09/06 22:08, , 1F
如果是我的話我會開一個86400的vector,有排程就開始塞
09/06 22:08, 1F

09/06 22:09, , 2F
最後從0看到86400,底下超過1個的就是有衝突,同時也知道是哪
09/06 22:09, 2F

09/06 22:09, , 3F
幾個是衝突的排程
09/06 22:09, 3F

09/06 22:10, , 4F
有點花記憶體就是了XD
09/06 22:10, 4F

09/06 22:35, , 5F
你的問題說"衝突",是指同時只能執行一件行程嗎?
09/06 22:35, 5F

09/06 22:48, , 6F
@yauhh 是的 同一秒 只能由一個排程所占據
09/06 22:48, 6F

09/07 05:57, , 7F
有數學解法 請查中國餘數定理
09/07 05:57, 7F
leslieha:轉錄至看板 Programming 09/07 14:18
文章代碼(AID): #1GIAfYl9 (Prob_Solve)