PTA資料結構與演算法題目集 中文 7 34

2022-04-11 06:02:44 字數 2068 閱讀 2702

7-34 任務排程的合理性 (25 分)

假定乙個工程專案由一組子任務構成,子任務之間有的可以並行執行,有的必須在完成了其它一些子任務後才能執行。「任務排程」包括一組子任務、以及每個子任務可以執行所依賴的子任務集。

比如完成乙個專業的所有課程學習和畢業設計可以看成乙個本科生要完成的一項工程,各門課程可以看成是子任務。有些課程可以同時開設,比如英語和c程式設計,它們沒有必須先修哪門的約束;有些課程則不可以同時開設,因為它們有先後的依賴關係,比如c程式設計和資料結構兩門課,必須先學習前者。

但是需要注意的是,對一組子任務,並不是任意的任務排程都是乙個可行的方案。比如方案中存在「子任務a依賴於子任務b,子任務b依賴於子任務c,子任務c又依賴於子任務a」,那麼這三個任務哪個都不能先執行,這就是乙個不可行的方案。你現在的工作是寫程式判定任何乙個給定的任務排程是否可行。

輸入說明:輸入第一行給出子任務數n(≤),子任務按1~n編號。隨後n行,每行給出乙個子任務的依賴集合:首先給出依賴集合中的子任務數k,隨後給出k個子任務編號,整數之間都用空格分隔。

如果方案可行,則輸出1,否則輸出0。

1200

2 1 2

01 4

1 52 3 6

1 32 7 8

1 71 10

1 7

1
5

1 42 1 4

2 2 5

1 30

0

題目分析:一道利用拓撲排序的題 考察的是拓撲排序的定義

1

#define _crt_secure_no_warnings

2 #include3 #include

4 #include

56 typedef struct enode*edge;

7struct

enode8;

1112 typedef struct gnode*graph;

13struct

gnode14;

1920

int isedge(graph gra, int v1, int

v2)21

2425

void

insert(graph gra, edge e)

2629

30 graph creategraph(int

nv)31

4041

int queue[110

];42

int rear = 0;43

int front = 1;44

int size = 0;45

int succ(int

num)

4652

53int

isempty()

5457

58void enqueue(int

num)

5964

65int

dequeue()

6672

73int indegree[110

];74

int collected[110

];75

intjudget(graph gra)

7687

while (!isempty())

8897}98

for (int i = 1; i <= gra->nv; i++)

99if (!collected[i])

100return0;

101return1;

102}

103int

main()

104119

}120

if(judget(gra))

121 printf("1"

);122

else

123 printf("0"

);124

return0;

125 }

view code

PTA 資料結構與演算法題目集(中文)6 2

6 2 順序表操作集 20 分 本題要求實現順序表的操作集。list makeempty position find list l,elementtype x bool insert list l,elementtype x,position p bool delete list l,positio...

PTA 資料結構與演算法題目集(中文)6 5

6 5 鏈式表操作集 20 分 本題要求實現鏈式表的操作集。position find list l,elementtype x list insert list l,elementtype x,position p list delete list l,position p 其中list結構定義如...

PTA資料結構與演算法題目集(中文)7 18

題意 有兩個視窗a,b,題目給出a視窗處理完兩個顧客,b視窗處理完乙個顧客,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。我們可以給出兩個佇列q1,q2分別表示a,b視窗,編號為奇數的顧客存放到q1中,為偶數的顧客存放到q2中。include include include include...