BOM 表為一棵樹的結構,描述一產品P 的製作過程,其每一節點N 描
述P 之某一零組件C 的製程;而其所連結之子樹,描述組合該零組件
C,所需的所有零組件之製程。如圖範例所示,零組件
0
C是由零組件
11
12
13
C
C
C
、
及
所組合製作而成;零組件
12
C 是由零組件
21
22
C
C
及
所組合製
作而成。而零組件
21
22
C
C
及
何者先製作完成是無所謂;同樣地零組件
11
12
13
C
C
C
、
及
何者先製作完成也是無所謂。但在製作過程中,需先製作完
成零組件
21
22
C
C
及
後,才能製作零組件
12
C ;且需先製作完成零組件
11
12
13
C
C
C
、
及
後,才能製作零組件
0
C。(每小題10 分,共20 分)
圖BOM 之範例
試寫一最快速演算法,列印出某一BOM 表所對應之產品P 之零組件
製程的製作順序。列印之順序為需先被生產之零組件的製程,需先被
列印出來。例如對範例圖所示,零組件
11
12
13
C
C
C
、
及
,皆需比零組件
0
C
早被列印出來;而零組件
21
22
C
C
及
,皆需比零組件
12
C 早被列印出來。
若每一節點N,都有紀錄欲生產一件產品P 時,所需該節點之零組件
的製程時間Tc。且假設有充足機器及原物料,可供其隨時生產該節點
之零組件;即可忽略等待機器及原物料的準備時間。請寫一最快速演
算法,以計算當欲生產完一件產品P 之最快生產時間。
請依照下列程式碼,當執行函數呼叫Test(3)時,最後輸出結果為何?並
請寫出詳細過程。(25 分)
String Test(int n) {
String s = n + Test(n - 1) + n + Test(n - 2);
if (n <= 0) return "";
return s;
}