給定一系列的任務,這些任務可能有依賴關係,有依賴關係須相繼執行,沒有依賴關係則可以同時執行。寫乙個函式,計算完成給定所有任務需要的時間。
//例如下面這些任務執行總時間為 4
const tasks =[,
,,];
今天在看牛客網的時候,看面經看到了這一道演算法題,不算太難,正好檢測一下這段時間學習演算法的成果,所有做了一下。
首先,分析一下給的例子這個題目的意思,如果兩個任務之間沒有依賴關係,那麼就不需要等待,直接同步執行即可,如果乙個任務依賴了其他的任務,那麼就要等待其他任務完成之後才能執行,然後得出最後所有任務都執行完所花費的時間,如果這些任務沒有多依賴,或者乙個任務會被多個任務以來,就只需要乙個雙重for迴圈就可以做出來。
這個題目的核心其實只需要得到依賴時間最長的那一組的時間總和即可,這個時間就是所有任務都執行完的時間。因為這組所花費的任務時間是最長的,所有,其他任務都執行完了,這一組還沒執行完,這組時間就是所有任務都執行完的時間。
因為任務有可能存在多個依賴或者深層次的依賴
const tasks =[,
,,,,
,];
所以,我們不能只是單純的判斷一次依賴,需要深度的進行判斷,所有這就需要用到遞迴了。使用遞迴的方式找到某個任務的所有依賴任務,以及依賴任務的依賴任務,把這些時間全部儲存到乙個陣列中,最後計算出來陣列的時間最長時間返回即可,**如下:
const tasks =[,
,];// 找到所有依賴的最長時間乙個陣列即可
function
gettime
(tasks)
// 依賴關係任務
const depen =
for(
let i =
0; i < tasks.length; i++)}
for(
const prop in namearr));
count > sum ? sum = count : sum
}return sum
}// 遞迴實現
function
dfs(depenname, arr, tasks, depen)}}
gettime
(tasks)
程式設計題 遊戲任務標記
內容會持續更新,有錯誤的地方歡迎指正,謝謝 遊戲裡面有很多各式各樣的任務,其中有一種任務玩家只能做一次,這類任務一共有1024個,任務id範圍 1,1024 請用32個unsigned int型別來記錄著1024個任務是否已經完成。初始狀態都是未完成。輸入兩個引數,都是任務id,需要設定第乙個id的...
621 任務排程器(中等題)
題目描述 給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必須有長度為...
Quartz cron任務排程時間表示式格式規則
quartz 用 cron 表示式存放執行計畫。引用了 cron 表示式的 crontrigger 在計畫的時間裡會與 job 關聯上。1 quartz cron 表示式支援七個域如下 名稱 是否必須 允許值 特殊字元 秒 是 0 59 分 是 0 59 時 是 0 23 日 是 1 31 l w ...