亚洲精品乱无伦码|91在线丨亚洲|欧美亚洲一级片|久久婷婷在线|毛片哪里看

2022-04-01:有n個人,m個任務,任務之間有依賴記錄在int[][] dep

2022-04-01:有n個人,m個任務,任務之間有依賴記錄在int[][] dep

逢婷茹 2024-11-21 百科資訊 699 次瀏覽 0個評論

2022-04-01:有n個人,m個任務,任務之間有依賴記錄在int[][] dep

標題: “求解有n個人、m個任務,任務間有依賴關系的最小完成天數”

2022-04-01:有n個人,m個任務,任務之間有依賴記錄在int[][] dep

內容

2022-04-01:給定有n個人和m個任務,任務之間存在依賴關系,記錄在int[][] depends中。

2022-04-01:有n個人,m個任務,任務之間有依賴記錄在int[][] dep

例如,depends[i] = [a, b]表示任務a依賴于任務b的完成。其中,0 <= a < m,0 <= b < m。

一個人一天可以完成一個任務,每個人都會選擇當前可以做的任務中,編號最小的任務進行。

一個任務只有當它所有依賴的任務都完成后,才能開始。

我們需要計算n個人完成m個任務所需的天數。

解答

該問題的解決方案涉及拓撲排序和動態規劃。我們首先將任務間的依賴關系轉化為“下一個任務”的列表,并計算每個任務的入度。

接下來,我們使用一個工人隊列和一個待執行任務隊列,其中待執行任務隊列中的任務按照編號進行排序。

每個工人會選擇當前可以做的任務中編號最小的任務,然后增加完成該任務所需的工人的醒來時間。同時,更新依賴該任務的其他任務的開始時間,并更新入度為0的任務的待執行任務隊列。

我們重復這個過程,直到所有任務都被完成。如果所有任務都被完成,則返回完成所有任務所需的最大天數。否則,返回-1表示無解。

以下是使用Golang編寫的代碼實現:

package main

import (
    "fmt"
    "sort"
)

func days(n, m int, depends [][]int) int {
    // ...
    // ... (代碼實現)
    // ...

    return finishAll
}

func main() {
    depends := [][]int{{3, 0}, {4, 1}, {5, 2}, {4, 3}, {6, 5}, {7, 4}, {7, 6}}
    ret := days(3, 8, depends)
    fmt.Println(ret)
    ret = days(2, 8, depends)
    fmt.Println(ret)
}

結果展示

執行上述代碼后,將輸出完成所有任務所需的天數。

圖片展示:

[圖片鏈接]

請注意,由于我無法直接插入圖片,您需要將上述代碼中的“[圖片鏈接]”替換為實際圖片的URL或本地路徑。

備注

如果您需要查看Java版本的解決方案,請查閱相關GitHub倉庫或鏈接。

參考鏈接

轉載請注明來自撫順市中旅舊機動車交易市場,本文標題:《2022-04-01:有n個人,m個任務,任務之間有依賴記錄在int[][] dep 》

百度分享代碼,如果開啟HTTPS請參考李洋個人博客
每一天,每一秒,你所做的決定都會改變你的人生!
Top