PAT測試題目“關鍵活動”

1 測試點:單起點和單終點,2條關鍵路徑

  說明:我開始未通過的原因:輸出順序的問題。

 題目原文:任務開始的交接點編號小者優先,起點編號相同時,與輸入時任務的順序相反。

  對活動,起始交接點相同的情況下,在輸入任務時,後輸入的先輸出。我的求解方法是整了個結構體封裝起始交接點、終止交接點、輸出次序編號,並對結構體數組排序。具體參考文獻2。

2 測試點:多起點和多終點

  說明:
  1 終點的確定,出度爲0爲終點爲終點。
  2 多終點,初始化時,每個終點的最晚完成時間,應當爲項目最大完成時間。針對這一點,下面有一個對應的測試樣例。本測試樣例來自文獻3。

輸入樣例
7 6
1 2 4
1 3 3
2 4 5
3 4 3
5 7 5
6 7 2

輸出樣例
9
1->2
2->4

  3 一個頂點,可以入隊,或者說可以被標記爲已經訪問的前提條件是:它的出度爲0。
  具體來說,更新一個頂點的最晚完成時間時,出度減1,並判斷它是否可以入隊。求解最晚完成時間部分僞代碼如下。本部分參考文獻2。

Vertex v = 出隊一個頂點;
for(v的每個未訪問的、且是v的前驅頂點的頂點) {
    
    更新最晚完成時間;
    
    當前頂點出度減1;
    if(當前頂點出度 == 0) {
        入隊當前頂點;        
    }
}

  一個比較好的測試樣子如下。本測試樣例來自文獻4。

輸入樣例    
11 14
1 2 4
1 3 3
2 4 5
3 4 3
4 5 1
4 6 6
5 7 5
6 7 2
8 3 7
9 3 7
9 10 6
4 10 2
10 6 5
6 11 4

輸出樣例
21
3->4
4->10
6->11
8->3
9->3
10->6

3 參考文獻

[1] https://pintia.cn/problem-set... (7-11 關鍵活動)
[2] https://blog.csdn.net/rxq2008... (7-11 關鍵活動(一) - A Little Programmer's Base - CSDN博客)
[3] https://blog.csdn.net/qq_2643... (08-圖9 關鍵活動 (30分) - master-dragon的專欄 - CSDN博客)
[4] http://www.voidcn.com/article...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章