資料結構與演算法

工作 A~E 有「A 在 C 之前」「B 在 C 之前」「C 在 D 之前」「B 在 E 之前」「E 在 D 之前」的順序限制。滿足所有限制的工作順序(拓撲排序的結果)為下列何者?

  1. AA, C, B, E, D
  2. BB, A, E, C, D
  3. CB, E, D, A, C
查看答案與解析

正確答案:B. B, A, E, C, D

在 B, A, E, C, D 中,A 與 B 在 C 之前,C 與 E 在 D 之前,B 在 E 之前,5個限制全部滿足。A, C, B, E, D 在 B 之前進行 C,違反「B 在 C 之前」;B, E, D, A, C 在 C 之前進行 D,違反「C 在 D 之前」。拓撲排序是在有方向且無環路的圖(DAG)中,把頂點排列成所有邊都由前指向後的操作,可以用反覆取出沒有進入邊之頂點的方法(Kahn 演算法)或深度優先搜尋求得。答案不一定只有一個,這個例子中滿足限制的順序有5種。

  • A. 在 B 之前進行 C,違反「B 在 C 之前」。
  • B. 正確。5個限制全部滿足。
  • C. 在 C 之前進行 D,違反「C 在 D 之前」。
練習這個領域 前往領域頁面

相關計算工具

資料結構與演算法的其他題目

  1. 函數 f(x, y) 定義為「若 y 為0則回傳 x,否則回傳 f(y, x mod y)」。呼叫 f(84, 36) 時的回傳值,以及 f 被呼叫的次數(含第一次呼叫)的組合為下列何者?
  2. 以遞迴將求費氏數的函數 fib(n) 定義為「若 n 在1以下則回傳 n,否則回傳 fib(n−1) + fib(n−2)」。呼叫 fib(5) 時,含第一次呼叫在內,fib 被呼叫幾次?
  3. 以1圓、4圓、6圓3種硬幣支付8圓。以從大硬幣開始盡量使用的貪婪演算法決定時的枚數,與最少枚數的關係,下列何者正確?
  4. 從(重量, 價值)為 (2, 3)、(3, 4)、(4, 5)、(5, 6) 的4件物品中選擇,放入容量為8的背包。每件物品只有1個,且不能分割。在重量合計8以下的條件下,價值合計的最大值為多少?
  5. 關於在字串中尋找樣式的 BM 法(Boyer-Moore 演算法)的特徵,下列何者正確?