113 年 國立中山大學資訊管理學系碩士班乙組《資料結構》

📄 試題原卷 免費註冊後即可對照原始考卷 PDF免費註冊

第 1 題

(單選) In Prim's algorithm, which of the following is applied to make the search for a minimum spanning tree more efficient?
A. set
B. stack
C. priority queue
D. binary search tree
E. None of the above

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

最小生成樹(Minimum Spanning Tree, MST)是在連通加權無向圖中,連結所有頂點且不形成循環、總邊權重最小的生成樹。

Prim's algorithm 採用貪心法:

  1. 先選定一個起始頂點,形成目前的樹集合 SS。
  2. 每次從連接 SS 與 V−SV-S 的候選邊中,選擇權重最小者。
  3. 將該邊及其尚未加入的頂點納入樹中。
  4. 重複上述步驟,直到所有頂點都加入。

關鍵操作是「快速找出目前候選邊中的最小權重」,因此適合使用以權重為鍵值的最小優先佇列(min-priority queue)。

解題方法

Prim's algorithm 每一步都必須處理跨越切割 (S,V−S)(S,V-S) 的候選邊,並執行:

extract-min\text{extract-min}

也就是取出權重最小的候選邊。

使用最小優先佇列後:

  • 插入候選邊或更新鍵值:通常為 O(log⁡V)O(\log V)。
  • 取出最小權重元素:通常為 O(log⁡V)O(\log V)。
  • 使用二元堆實作時,整體複雜度常為:
O((V+E)log⁡V)O((V+E)\log V)

相較於每次在線性資料結構中搜尋最小邊,優先佇列能有效降低搜尋成本。因此正確選項是 priority queue。

選項分析

  • A. set

    set 可用來記錄哪些頂點已經加入目前的生成樹,避免重複加入頂點或形成錯誤連結。然而,單純的集合主要提供成員資格判斷,無法直接有效率地找出權重最小的候選邊,因此不是本題所問的主要效率工具。

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 2 題

(單選) Which of the following statements about heaps is TRUE?
A. Heaps are a type of self-balancing binary search tree.
B. In a max-heap, the key value in each node is always smaller than the key values of its children.
C. Deletion of the maximum element from a d-ary max-heap takes O(d loga n) time, where n is the number of nodes.
D. Creating a heap of n elements using bottom-up heap construction takes O(n log n) time.
E. Binary heaps are full binary trees.

登入後即可作答並保存紀錄。

這一題的完整詳解

概念快速檢核

  • Heap vs. BST:Heap 只保證父節點鍵 ≥\ge(或 ≤\le)其子節點,與二元搜尋樹的左<根<右 完全不同,亦非自平衡樹。
  • Max‑heap 方向:父鍵 不小於 子鍵;若父鍵較小則違反定義。
  • d‑ary heap 刪除最大:將最後一個葉節點搬至根,再向下「heapify」。每層需在 dd 個子中找最大,費 O(d)O(d);
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 3 題

(單選) What is the solution to the recurrence relation: T(n)=T(n/2)+nT(n) = T(n/2) + n, with T(1)=1T(1) = 1?
A. T(n)=O(log⁡n)T(n) = O(\log n)
B. T(n)=O(n)T(n) = O(n)
C. T(n)=O(nlog⁡n)T(n) = O(n \log n)
D. T(n)=O(n2)T(n) = O(n^2)
E. T(n)=O(2n)T(n) = O(2^n)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查遞迴關係式的展開,以及幾何級數的漸近分析。

每次遞迴:

  • 問題規模由 nn 降為 n/2n/2;
  • 當層額外花費為 nn;
  • 遞迴終止條件為 T(1)=1T(1)=1。

遞迴深度為 log⁡2n\log_2 n,但每層的工作量會依序減半,因此總成本不能只用「層數 ×\times 每層成本」估算。

解題方法:逐層展開

假設 n=2kn=2^k,因此 k=log⁡2nk=\log_2 n。

T(n)=T(n/2)+n=T(n/4)+n2+n=T(n/8)+n4+n2+n=⋯=T(1)+n+n2+n4+⋯+n2k−1.\begin{aligned} T(n) &=T(n/2)+n\\ &=T(n/4)+\frac n2+n\\ &=T(n/8)+\frac n4+\frac n2+n\\ &=\cdots\\ &=T(1)+n+\frac n2+\frac n4+\cdots+\frac{n}{2^{k-1}}. \end{aligned}

這是一個首項為 nn、公比為 1/21/2 的幾何級數:

T(n)=1+∑i=0k−1n2i=1+n⋅1−(1/2)k1−1/2.\begin{aligned} T(n) &=1+\sum_{i=0}^{k-1}\frac{n}{2^i}\\ &=1+n\cdot\frac{1-(1/2)^k}{1-1/2}. \end{aligned}

由於 n=2kn=2^k,所以 (1/2)k=1/n(1/2)^k=1/n:

T(n)=1+2n(1−1n)=2n−1.\begin{aligned} T(n) &=1+2n\left(1-\frac1n\right)\\ &=2n-1. \end{aligned}

因此:

T(n)=Θ(n),T(n)=\Theta(n),

其最緊確上界為 O(n)O(n)。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 4 題

(單選) An array contains ten integers: 7, 5, 10, 11, 3, 9, 2, 4, 8, 6. What will the resulting array be if we use the Hoare partition scheme with 7 as the pivot to partition the array?
A. 7 5 6 4 3 2 9 11 8 10
B. 2 5 6 4 3 7 9 11 8 10
C. 5 3 2 4 6 7 10 11 8 9
D. 5 3 2 4 6 7 10 11 9 8
E. None of the above

登入後即可作答並保存紀錄。

這一題的完整詳解

Hoare partition(基於 pivot = 7)流程

  1. 初始指標:i = -1、j = 10(陣列長度 10)。
  2. 重複以下直到 i ≥ j:
    • i ← i+1 直到 A[i] ≥ 7。
    • j ← j-1 直到 A[j] ≤ 7。
    • 若 i < j,交換 A[i] 與 A[j]。
迭代i 變化j 變化交換元素交換後陣列
1i=0 (7 ≥7)j=9 (6 ≤7)7 ↔ 66 5 10 11 3 9 2 4 8 7
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 5 題

(單選) Which of the following algorithms exhibits a greedy characteristic?
A. Binary search
B. Merge sort
C. Quicksort
D. Floyd-Warshall algorithm
E. Prim's algorithm

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查演算法設計策略中的「貪婪法(Greedy Method)」。

貪婪法的特徵是:在每一步都選擇當下看來最有利的可行選擇,且通常不回溯;若該問題具有貪婪選擇性質,這些局部最佳選擇能組合成全域最佳解。

最小生成樹問題具有「割集合定理(Cut Property)」:

對圖中任意一個割集合,跨越該割集合的最小權重邊,必定是某棵最小生成樹中的安全邊。

Prim's algorithm 正是反覆利用此性質選擇邊,因此具有貪婪特徵。

解題方法

判斷各選項所屬的主要演算法策略:

  • Binary search:分治式搜尋
  • Merge sort:分治法
  • Quicksort:分治法
  • Floyd-Warshall:動態規劃
  • Prim's algorithm:貪婪法

Prim's algorithm 的流程如下:

  1. 先選定一個起點,令已加入樹的頂點集合為 SS。
  2. 從所有一端在 SS、另一端在 V−SV-S 的邊中,選擇權重最小者。
  3. 將該邊及其新頂點加入目前的生成樹。
  4. 重複上述步驟,直到所有頂點都被加入。

每一步都選擇「目前跨越割集合 (S,V−S)(S,V-S) 的最小權重邊」,這正是局部最佳選擇。根據割集合定理,此邊是安全的,能保證最終形成最小生成樹。

選項分析

A. Binary search

錯誤。

Binary search 用於已排序的資料。每次檢查中間元素,依比較結果捨棄左半部或右半部,使搜尋範圍縮小為原來的一半。

其核心是利用排序性質進行分治搜尋,時間複雜度為

T(n)=T(n/2)+O(1)=O(log⁡n)T(n)=T(n/2)+O(1)=O(\log n)

中間元素並不是根據「目前解中最有利的選擇」來建構最佳解,因此 Binary search 不屬於貪婪法。

B. Merge sort

錯誤。

Merge sort 先將資料遞迴切成兩半,分別排序後,再將兩個已排序的子序列合併。

其遞迴式為

T(n)=2T(n/2)+O(n)T(n)=2T(n/2)+O(n)

因此時間複雜度為

O(nlog⁡n)O(n\log n)

它的核心是分割問題、解決子問題,再合併結果,屬於分治法,不是貪婪法。

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 6 題

(單選) Which of the following statements about binary search is TRUE?
A. Binary search has a time complexity of O(n).
B. Binary search has a space complexity of O(n).
C. Binary search compares elements by traversing the array from left to right.
D. Binary search requires the elements to be sorted in order.
E. Binary search uses more memory compared to linear search.

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

Binary search(二分搜尋)適用於已排序的資料。每次取目前搜尋範圍的中間元素,將其與目標值比較:

  • 相等:搜尋成功。
  • 目標值較小:只搜尋左半部。
  • 目標值較大:只搜尋右半部。

每次比較都會使搜尋範圍約縮小為原來的一半,因此時間複雜度為:

T(n)=T(n2)+O(1)=O(log⁡n)T(n)=T\left(\frac{n}{2}\right)+O(1)=O(\log n)

以陣列的迭代式實作而言,額外空間複雜度為 O(1)O(1);若使用遞迴,則遞迴堆疊為 O(log⁡n)O(\log n)。

解題方法

判斷各選項是否符合二分搜尋的三個特徵:

  1. 資料必須先排序。
  2. 每次比較中間位置的元素。
  3. 每次排除約一半的搜尋範圍。

符合「資料必須排序」的選項即為正確答案。

選項分析

A. Binary search has a time complexity of O(n).

錯誤。

二分搜尋每次將搜尋範圍縮小一半,最多需要約 log⁡2n\log_2 n 次比較,因此時間複雜度為:

O(log⁡n)O(\log n)

O(n)O(n) 是線性搜尋在最壞情況下的時間複雜度,不是二分搜尋的典型複雜度。二分搜尋在目標值恰好位於第一次檢查的中間位置時,最佳情況為 O(1)O(1)。

B. Binary search has a space complexity of O(n).

錯誤。

以陣列進行迭代式二分搜尋時,只需維護搜尋邊界,例如 left、right 與 mid,所以額外空間複雜度為:

O(1)O(1)
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 7 題

(單選) What data structure is used when performing Breadth First Search on a graph?
A. stack
B. queue
C. tree
D. both stack and queue
E. None of the above

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

Breadth First Search(BFS,廣度優先搜尋)是按照「距離起點的層數」逐層拜訪圖中的頂點:

  1. 先拜訪起點。
  2. 再拜訪起點的所有鄰接頂點。
  3. 接著拜訪距離起點兩條邊的頂點。
  4. 依此類推。

為了維持「先發現的頂點先處理」的順序,BFS 使用 Queue(佇列)。佇列遵循 FIFO(First In, First Out,先進先出)原則,正好符合廣度優先的拜訪順序。

解題方法

BFS 的基本流程如下:

BFS(G, s):
    建立空佇列 Q
    將起點 s 標記為已拜訪
    enqueue(Q, s)

    while Q 不為空:
        u = dequeue(Q)
        for each u 的鄰接頂點 v:
            if v 尚未拜訪:
                將 v 標記為已拜訪
                enqueue(Q, v)

假設起點為 ss,且 ss 的鄰接頂點依序為 a,ba,b:

  • 初始佇列:[s][s]
  • 移除 ss,加入 a,ba,b:[a,b][a,b]
  • 移除 aa,加入 aa 尚未拜訪的鄰點:[b,…][b,\ldots]
  • 移除 bb,再處理 bb 的鄰點

由於 aa 比後來發現的頂點更早進入佇列,因此會先被處理,這能確保 BFS 逐層搜尋。

若使用鄰接串列表示圖,BFS 的時間複雜度為:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 8 題

(單選) If we sequentially insert the keys 5, 9, 2, 0, 21, 14 into a table of size 7 using the hash function h(k)=k(mod7)h(k) = k \pmod{7} and linear probing, what will the final table look like?
A.
0 21 9
2
14
5
B.
0 21 9
2
5
14
C.
0
21
9
5
2
14
D.
5
9
2
0
21
14
Ε.
5
9
2
0
14 21

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查雜湊表(hash table)的線性探測法(linear probing)。

表格大小為 77,因此索引位置為 00 到 66。雜湊函數為:

h(k)=k mod 7h(k)=k\bmod 7

若計算出的槽位已被占用,線性探測會依序檢查下一格:

h(k), h(k)+1, h(k)+2,…h(k),\ h(k)+1,\ h(k)+2,\ldots

索引超過 66 時須從 00 繼續循環。

解題方法

依照題目給定的插入順序,逐一計算雜湊位置並處理碰撞。

插入鍵值雜湊值探測過程最終位置
555 mod 7=55\bmod 7=5位置 55 為空55
999 mod 7=29\bmod 7=2位置 22 為空22
222 mod 7=22\bmod 7=2位置 22 已有 99,探測位置 3333
000 mod 7=00\bmod 7=0位置 00 為空00
212121 mod 7=021\bmod 7=0位置 00 已有 00,探測位置 1111
141414 mod 7=014\bmod 7=0位置 0,1,2,30,1,2,3 均已占用,位置 44 為空44

因此最後的雜湊表為:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 9 題

(單選) Which of the following statements about complete binary trees is TRUE?
A. The height of a complete binary tree with n nodes is (log⁡n)+1(\log n)+1.
B. A complete binary tree can have missing nodes on any level.
C. All leaf nodes are at the same level.
D. A complete binary tree is also a binary search tree.
E. None of the above

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

完全二元樹(complete binary tree)的定義是:

  • 除了最底層之外,其餘各層都必須填滿。
  • 最底層的節點必須由左至右連續排列。

本題採用根節點為第 11 層的高度定義。若高度為 hh,則節點數滿足:

2h−1≤n≤2h−12^{h-1}\le n\le 2^h-1

因此:

h=⌊log⁡2n⌋+1h=\lfloor\log_2 n\rfloor+1

選項中的 log⁡n+1\log n+1 是省略取整數符號後的常用寫法,其中 log⁡\log 以 22 為底。

解題方法

利用完全二元樹的層數與節點數關係判斷:

  • 高度為 hh 時,前 h−1h-1 層已經完全填滿,因此至少有 2h−12^{h-1} 個節點。
  • 高度為 hh 時,最多有 2h−12^h-1 個節點。
  • 解得高度為 ⌊log⁡2n⌋+1\lfloor\log_2 n\rfloor+1,符合選項 A。

例如 n=10n=10 時:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 10 題

(單選) Given the graph below (Figure 1), which edge can be removed to turn it into a bipartite graph?
🖼️【此處有附圖,請對照原卷】
A. C-F
B. E-F
C. B-C
D. B-D
E. None of the above.
(Figure 1)

🖼️ 本題含圖表,以下為原卷對應頁面:
原卷第 3 頁

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

無向圖是二分圖,表示頂點可以分成兩組,使每條邊的兩端都分屬不同組。等價地,無向圖是二分圖若且唯若不含奇數長度的環。

圖中有三角形 B−C−D−BB-C-D-B,也有環 B−C−F−E−BB-C-F-E-B。刪除邊後,必須確認所有奇數環都已消失。

解題方法

逐一檢查選項是否能消除圖中的奇數環:

  • 刪除三角形中的一條邊,只能破壞三角形;還要確認是否留下其他奇數環。
  • 若刪除 B−DB-D,頂點可分成兩組:{B,D,F}\{B,D,F\} 與 {A,C,E}\{A,C,E\}。圖上的每條邊都連接兩組,因此刪除後是二分圖。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 11 題

(單選) Let L(X) be the number of leaves in a binary tree with root node T. Assume that Leaf(T) returns 1 if T is a leaf node. Which of the following leads to a recursive implementation?
A. L(T):=L(T.Left)+L(T.Right)+Leaf(T)L(T) := L(T.Left)+L(T.Right)+Leaf(T)
B. L(T):=L(T.Left)+L(T.Right)+Leaf(T)+1L(T) := L(T.Left)+L(T.Right)+Leaf(T)+1
C. L(T):=L(T.Left)+L(T.Right)L(T) := L(T.Left)+L(T.Right)
D. L(T):=L(T.Left)+L(T.Right)+1L(T) := L(T.Left)+L(T.Right)+1
E. None of the above

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

二元樹的葉節點數可由「根節點是否為葉節點」與「左右子樹的葉節點數」組成:

L(T)=L(T.Left)+L(T.Right)+Leaf(T)L(T)=L(T.Left)+L(T.Right)+Leaf(T)

其中:

  • 若 TT 為葉節點,則 Leaf(T)=1Leaf(T)=1。
  • 若 TT 不是葉節點,則 Leaf(T)=0Leaf(T)=0。
  • 空子樹的葉節點數定義為 L(NULL)=0L(NULL)=0。

因此,當根節點是葉節點時,左右子樹皆為空:

L(T)=0+0+1=1L(T)=0+0+1=1

當根節點不是葉節點時:

L(T)=L(T.Left)+L(T.Right)+0L(T)=L(T.Left)+L(T.Right)+0

正好等於左右子樹葉節點數的總和。

解題方法

採用「根節點分類」判斷遞迴式:

  1. 若根節點 TT 是葉節點,答案必須為 11。
  2. 若根節點 TT 不是葉節點,答案應為左右子樹葉節點數之和。
  3. 將兩種情況合併,便是在左右子樹遞迴結果之外,加上 Leaf(T)Leaf(T)。

所以正確遞迴定義為:

L(T)={0,T=NULLL(T.Left)+L(T.Right)+Leaf(T),T≠NULLL(T)= \begin{cases} 0, & T=NULL\\ L(T.Left)+L(T.Right)+Leaf(T), & T\neq NULL \end{cases}

選項分析

  • A. L(T):=L(T.Left)+L(T.Right)+Leaf(T)L(T):=L(T.Left)+L(T.Right)+Leaf(T)

    正確。根節點為葉節點時,Leaf(T)=1Leaf(T)=1;根節點為內部節點時,Leaf(T)=0Leaf(T)=0,完整涵蓋兩種情況。

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 12 題

(單選) Which of the following sorting algorithms can obtain minimum time complexity in sorting a random linked list?
A. Insertion Sort
B. Quick Sort
C. Heap Sort
D. Bubble Sort
E. Merge Sort

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查「鏈結串列適合使用哪一種排序法」以及比較排序的時間複雜度下限。

設鏈結串列共有 nn 個節點,且資料排列為隨機、未排序狀態。對於比較排序而言,必須區分至少 n!n! 種可能的排列,因此決策樹高度至少為:

log⁡2(n!)=Θ(nlog⁡n)\log_2(n!)=\Theta(n\log n)

所以比較排序在一般情況下的最佳漸進時間複雜度為:

Ω(nlog⁡n)\Omega(n\log n)

能穩定達到此下限的排序法,才可視為具有最佳時間複雜度。

鏈結串列不支援陣列的隨機存取,無法在 O(1)O(1) 時間內取得第 ii 個元素。因此,適合鏈結串列的排序法應盡量避免大量的索引存取與元素搬移。

解題方法

Merge Sort 的流程如下:

  1. 將鏈結串列分割成兩半。
  2. 分別遞迴排序左右兩個子串列。
  3. 將兩個已排序的鏈結串列合併。

對鏈結串列而言,可以使用慢指標與快指標找出中點,並以重新連接節點指標的方式完成分割。每一層分割總共需要掃描 O(n)O(n) 個節點。

合併兩個已排序鏈結串列時,只需比較兩個串列目前的首節點,將較小者接到結果串列尾端。每個節點只會被處理一次,因此合併成本為 O(n)O(n)。

其遞迴式為:

T(n)=2T(n2)+O(n)T(n)=2T\left(\frac n2\right)+O(n)

由主定理可得:

T(n)=Θ(nlog⁡n)T(n)=\Theta(n\log n)

此複雜度達到比較排序的理論下限,且不需要對鏈結串列進行大量隨機存取,因此 Merge Sort 是本題最佳選擇。

選項分析

A. Insertion Sort

Insertion Sort 依序取出元素,插入前面已排序的部分。

隨機排列平均具有 Θ(n2)\Theta(n^2) 個數量級的逆序關係。即使鏈結串列在找到插入位置後只需調整指標,尋找插入位置仍可能需要逐節點掃描,因此平均與最壞時間複雜度皆為:

Θ(n2)\Theta(n^2)

已排序輸入的最佳情況可達 O(n)O(n),但題目指定的是隨機、未排序的鏈結串列,因此不是最佳答案。

B. Quick Sort

Quick Sort 每次選擇樞紐值進行分割。

若每次分割都接近左右各半,遞迴式為:

T(n)=2T(n2)+O(n)T(n)=2T\left(\frac n2\right)+O(n)

此時可達到 Θ(nlog⁡n)\Theta(n\log n)。然而,若樞紐值經常落在最小值或最大值附近,遞迴式會變成:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 13 題

(單選) What is the best time complexity we can achieve to calculate all-pairs shortest paths in a weighted graph?
A. O(n)O(n)
B. O(nlog⁡n)O(n \log n)
C. O(n2)O(n^2)
D. O(n3)O(n^3)
E. O(n4)O(n^4)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查加權圖的全點對最短路徑問題(All-Pairs Shortest Paths, APSP):計算任意頂點 ii 到任意頂點 jj 的最短距離,共有 n2n^2 組距離需要求得。

對一般加權圖,最經典且穩定的解法是 Floyd–Warshall 演算法。令

  • D(k)[i][j]D^{(k)}[i][j]:只允許頂點 1,2,…,k1,2,\ldots,k 作為中繼點時,ii 到 jj 的最短距離。
  • 初始狀態:
D(0)[i][j]={0,i=jw(i,j),i,j 之間有邊∞,沒有直接邊D^{(0)}[i][j]= \begin{cases} 0, & i=j\\ w(i,j), & i,j\text{ 之間有邊}\\ \infty, & \text{沒有直接邊} \end{cases}

加入第 kk 個中繼點時,最短路徑只有兩種情況:

  1. 不經過 kk;
  2. 經過 kk,分成 i→ki\to k 與 k→jk\to j 兩段。

因此遞迴式為

D(k)[i][j]=min⁡(D(k−1)[i][j],D(k−1)[i][k]+D(k−1)[k][j])D^{(k)}[i][j] = \min\left( D^{(k-1)}[i][j], D^{(k-1)}[i][k]+D^{(k-1)}[k][j] \right)

解題方法

Floyd–Warshall 需要枚舉:

  • 中繼點 kk:nn 種;
  • 起點 ii:nn 種;
  • 終點 jj:nn 種。

每次只進行常數時間的加法與比較,因此總時間複雜度為

O(n)×O(n)×O(n)=O(n3)O(n)\times O(n)\times O(n)=O(n^3)

其核心程式結構如下:

for k = 1 to n:
    for i = 1 to n:
        for j = 1 to n:
            d[i][j] = min(d[i][j], d[i][k] + d[k][j])
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 14 題

(單選) Consider an undirected random graph of eight vertices. For each pair of vertices, the probability of an edge between them is 0.5. What is the expected number of unordered cycles of length three?
A. 1/8
B. 1/2
C. 1
D. 7
E. 8

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查隨機圖中三角形(長度為 3 的無向環)之期望值。

在 8 個頂點的無向圖中,每 3 個頂點若其間的 3 條邊全部存在,就形成一個三角形。由於題目強調是 unordered cycles,同一組 3 個頂點只計算一次。

使用期望值的線性性:

E[X]=∑E[Ii]E[X]=\sum E[I_i]

其中 IiI_i 表示某一組頂點是否形成三角形。

解題方法

先選出形成三角形的 3 個頂點:

(83)=56\binom{8}{3}=56

固定任意 3 個頂點後,三者之間共有 3 條可能的邊。要形成三角形,這 3 條邊必須全部存在;每條邊存在的機率為 0.50.5,因此:

P(固定三點形成三角形)=(0.5)3=18P(\text{固定三點形成三角形}) =(0.5)^3 =\frac{1}{8}

故三角形數量的期望值為:

E[X]=(83)(0.5)3=56⋅18=7E[X] =\binom{8}{3}(0.5)^3 =56\cdot\frac{1}{8} =7

因此正確選項為 D。

選項分析

  • A. 18\frac{1}{8}:錯誤。
    18\frac{1}{8} 是固定一組 3 個頂點形成三角形的機率,不是整張圖中三角形數量的期望值。
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 15 題

(單選) A priority-queue is implemented as a max-heap. Assume that a priority-queue contains five records and the level-order traversal of the heap is: 10, 8, 5, 3, 2. What is the level-order traversal of the heap, after two new records "1" and "7" are inserted into the heap in sequence?
A. 10, 8, 7, 5, 3, 2, 1
B. 10, 8, 7, 2, 3, 1, 5
C. 10, 8, 7, 1, 2, 3, 5
D. 10, 8, 5, 3, 2, 1, 7
E. 10, 8, 7, 3, 2, 1, 5

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查最大堆積(max-heap)的結構與插入操作。

  1. 最大堆積必須符合:每個父節點的值皆大於或等於其子節點。
  2. 完整二元樹以陣列儲存時,level-order traversal 就是陣列順序。
  3. 採用 11 起始索引時:
parent(i)=⌊i2⌋\text{parent}(i)=\left\lfloor \frac{i}{2}\right\rfloor

新紀錄必須先放在下一個可用位置,再沿著父節點向上比較;若新值大於父節點,就交換,此過程稱為上浮(percolate up)。


解題方法

原始堆積的陣列為:

[10,8,5,3,2][10,8,5,3,2]

其結構為:

        10
       /  \
      8    5
     / \  \
    3   2

第一次插入 11

新節點放在第 66 個位置,也就是節點 55 的左子節點:

[10,8,5,3,2,1][10,8,5,3,2,1]

因為:

1<51<5

不需上浮,堆積維持不變。

第二次插入 77

新節點放在第 77 個位置,也就是節點 55 的右子節點:

[10,8,5,3,2,1,7][10,8,5,3,2,1,7]

比較 77 與父節點 55:

7>57>5

因此交換兩者:

[10,8,7,3,2,1,5][10,8,7,3,2,1,5]

接著比較 77 與其新父節點 1010:

7<107<10

停止上浮。因此最後的 level-order traversal 為:

10,8,7,3,2,1,510,8,7,3,2,1,5

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 16 題

(單選) What does the following procedure perform on a graph in which "edges" is the adjacency list representation of the graph?

void measure(vector<vector<int>>edges) {
    int count = 0;
    for (auto x : edges) {
        for (auto y : x) {
            count += 1;
        }
    }
    cout << count / 2 << endl;
}

A. Calculate the number of edges in an undirected graph.
B. Calculate the number of nodes on a given graph.
C. Calculate the number of connected components on a given graph.
D. Calculate the number of degrees of all nodes on a given graph.
E. None of the above

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查:

  • Adjacency list(鄰接串列)表示法
  • 無向圖中每條邊會在兩個端點的鄰接串列各出現一次
  • 握手定理(Handshaking Lemma):
∑v∈Vdeg⁡(v)=2∣E∣\sum_{v\in V}\deg(v)=2|E|

其中 deg⁡(v)\deg(v) 是頂點 vv 的度數,∣E∣|E| 是邊數。


解題方法

對每個頂點 xx,內層迴圈會逐一走訪其鄰接串列中的所有頂點 yy:

for (auto x : edges) {
    for (auto y : x) {
        count += 1;
    }
}

因此:

count=∑v∈Vdeg⁡(v)\texttt{count} = \sum_{v\in V}\deg(v)

對無向圖而言,每條邊會被計數兩次。例如邊 (u,v)(u,v) 會在 uu 的鄰接串列出現一次,也會在 vv 的鄰接串列出現一次,所以:

count=2∣E∣\texttt{count}=2|E|

最後輸出:

cout << count / 2 << endl;

得到:

count2=2∣E∣2=∣E∣\frac{\texttt{count}}{2} = \frac{2|E|}{2} = |E|

所以此程序計算的是無向圖的邊數。

例如,若圖有兩條邊:

0: 1, 2
1: 0
2: 0

所有鄰接串列共有 44 個項目,count = 4,輸出 4/2=24/2=2,正好是邊數。


選項分析

  • A. Calculate the number of edges in an undirected graph.

    正確。無向圖中每條邊在鄰接串列出現兩次,count / 2 即為邊數。

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 17 題

(單選) Consider an undirected unweighted graph G. Starting from a node r, a breadth-first traversal of G is performed. Let d(r,u)d(r, u) and d(r,v)d(r, v) denote the lengths of the shortest paths from r to u and v respectively. If u is visited before v during the breadth-first traversal, which of the following statements is correct?
A. d(r,u)>d(r,v)d(r, u) > d(r, v)
B. d(r,u)<d(r,v)d(r, u) < d(r, v)
C. d(r,u)≥d(r,v)d(r, u) \ge d(r, v)
D. d(r,u)≤d(r,v)d(r, u) \le d(r, v)
E. None of the above

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查無權圖的廣度優先搜尋(Breadth-First Search, BFS)與最短路徑距離。

在無權圖中,每條邊的成本皆為 11,因此從起點 rr 到頂點 xx 的最短距離 d(r,x)d(r,x),就是最短路徑所包含的邊數。

BFS 會依照距離分層搜尋:

Lk={x∣d(r,x)=k}L_k=\{x\mid d(r,x)=k\}

搜尋順序必定是先處理 L0L_0,再處理 L1L_1、L2L_2,依此類推。同一層中的頂點,先後順序則取決於鄰接串列順序。

因此,BFS 的重要性質為:

u 在 v 之前被訪問⟹d(r,u)≤d(r,v)u\text{ 在 }v\text{ 之前被訪問}\quad\Longrightarrow\quad d(r,u)\le d(r,v)

解題方法

BFS 使用先進先出(FIFO)的佇列:

  1. 先訪問起點 rr,其距離為 00。
  2. 訪問 rr 的所有未訪問鄰居,這些頂點距離為 11。
  3. 再依序訪問距離為 11 的頂點,找出距離為 22 的頂點。
  4. 持續按照距離由小到大的順序處理。

所以,若 uu 在 vv 之前被訪問,uu 不可能比 vv 距離起點更遠,只能是:

  • d(r,u)<d(r,v)d(r,u)<d(r,v):uu 比 vv 更接近 rr;
  • d(r,u)=d(r,v)d(r,u)=d(r,v):uu 與 vv 位於同一層。

綜合可得:

d(r,u)≤d(r,v)d(r,u)\le d(r,v)
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 18 題

(複選) Suppose the alphabet of a text message has 5 characters: P, Q, R, S, T with frequencies of 20, 5, 13, 12, 10, respectively. We use Huffman's coding to encode these characters to binary codes. Which of the following statements are TRUE?
A. The binary codes for P and Q have the same length.
B. The binary codes for Q and S have the same length.
C. The binary codes for S and T have the same length.
D. The binary codes for P and R have the same length.
E. The binary codes for Q and T have the same length.

登入後即可作答並保存紀錄。

這一題的完整詳解

先將頻率由小至大排列:Q5,  T10,  S12,  R13,  P20Q5,\;T10,\;S12,\;R13,\;P20

  1. 合併最小的兩個:Q5+T10=15Q5+T10=15 → 節點 AA
  2. 再合併次小的兩個:S12+R13=25S12+R13=25 → 節點 BB
  3. 合併 A15A15 與 P20P20:15+20=3515+20=35 → 節點 CC
  4. 最後合併 B25B25 與 C35C35 成根節點,總頻率 6060

從根開始計算葉節點深度(即編碼長度):

  • 根的左子樹 BB,其子節點 S,RS,R 深度 22 → 編碼長度 22。
  • 根的右子樹 CC,其子節點 PP 深度 22 → 編碼長度 22。
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 19 題

(複選) Consider an unsorted singly linked list of length n, where only the head pointer is available. Which of the following operations can be implemented in O(n) time?
A. Deleting the first node of the linked list.
B. Deleting the last node of the linked list.
C. Inserting an item at the front of the linked list.
D. Finding the minimum item in the linked list.
E. Reversing the linked list.

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查單向鏈結串列(singly linked list)的指標操作與時間複雜度。

已知條件:

  • 只有 head 指標,沒有 tail 指標。
  • 每個節點只能沿著 next 往後走,不能由後往前走。
  • 串列未排序,因此尋找最小值不能提早結束。
  • 正式的 Big-O 表示「最多為此成長階」,所以 O(1)O(1) 也屬於 O(n)O(n),因為:
O(1)⊆O(n)O(1)\subseteq O(n)

因此,題目問「能否實作成 O(n)O(n)」,時間為 O(1)O(1) 的操作也符合條件。

解題方法

逐一判斷每個操作需要:

  1. 是否必須走訪節點;
  2. 最多走訪幾個節點;
  3. 是否只需修改固定數量的指標。

只走訪固定數量節點是 O(1)O(1);最多走訪整條串列一次是 O(n)O(n)。

選項分析

A. Deleting the first node:正確

刪除第一個節點只需將 head 移到下一個節點:

head←head.next\text{head} \leftarrow \text{head.next}

只需執行固定數量的指標操作,因此實際複雜度為:

O(1)O(1)

而 O(1)O(1) 屬於 O(n)O(n),所以本選項符合題意。

B. Deleting the last node:正確

單向鏈結串列要刪除最後一個節點,必須找到倒數第二個節點,將其 next 設為 null。

例如:

previous.next = null

但只有 head 指標,且無法向前移動,因此必須從串列開頭逐節點走訪,直到找到最後一個節點及其前驅節點。最多需要走訪 nn 個節點:

T(n)=O(n)T(n)=O(n)

所以本選項正確。

C. Inserting an item at the front:正確

在串列前端插入新節點,只需:

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 20 題

(複選) Which of the following statements about merge sort are TRUE?
A. It uses a divide-and-conquer strategy to sort the elements.
B. It has a space complexity of O(1).
C. It has a best-case time complexity of O(n) for sorting n elements.
D. It is an in-place sorting algorithm.
E. It is suitable for sorting large datasets.

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

Merge sort(合併排序)採用分治法(divide and conquer):

  1. Divide:將資料分成兩半。
  2. Conquer:遞迴地將左右兩半排序。
  3. Combine:將兩個已排序的子序列合併。

其時間複雜度可由遞迴式表示:

T(n)=2T(n2)+Θ(n)T(n)=2T\left(\frac{n}{2}\right)+\Theta(n)

其中 Θ(n)\Theta(n) 是合併兩個子序列所需的時間。依主定理可得:

T(n)=Θ(nlog⁡n)T(n)=\Theta(n\log n)

因此,標準 merge sort 的最佳、平均與最壞情況時間複雜度皆為 Θ(nlog⁡n)\Theta(n\log n)。

解題方法

逐一依照 merge sort 的核心特性判斷:

  • 是否使用分治策略?
  • 是否需要額外記憶體?
  • 最佳情況是否仍需處理各層合併?
  • 是否屬於 in-place sorting?
  • O(nlog⁡n)O(n\log n) 是否適合大型資料集?

選項分析

A. It uses a divide-and-conquer strategy to sort the elements.

正確。Merge sort 先將序列不斷分割成較小的子序列,再遞迴排序,最後逐層合併,因此是典型的分治演算法。

B. It has a space complexity of O(1).

錯誤。標準陣列版 merge sort 在合併時通常需要額外的暫存陣列,儲存量為 O(n)O(n);遞迴呼叫堆疊另需 O(log⁡n)O(\log n)。

因此總額外空間複雜度為:

O(n)+O(log⁡n)=O(n)O(n)+O(\log n)=O(n)
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 21 題

(複選) Consider a binary tree T whose pre-order is 10 17 5 2 19 12 15 20 and in-order is 1 257 10 12 15 19 20. Which of the following statements are TRUE?
A. The level-order traversal is 10 1 19 7 12 20 5 15 2.
B. The post-order traversal is 2 5 7 1 15 12 20 19 10.
C. T is also a binary search tree.
D. T is also an AVL tree.
E. The height of T is 4.

登入後即可作答並保存紀錄。

這一題的完整詳解

先以先序與中序建立二元樹。
先序:10  1  5  2  7  19  12  15  2010\;1\;5\;2\;7\;19\;12\;15\;20
中序:1  2  5  7  10  12  15  19  201\;2\;5\;7\;10\;12\;15\;19\;20

  1. 根節點 1010(先序第一個)。
    • 左子樹的中序為 1  2  5  71\;2\;5\;7,對應先序 1  5  2  71\;5\;2\;7。
      • 根 11,右子樹中序 2  5  72\;5\;7、先序 5  2  75\;2\;7。
        • 根 55,左子 22,右子 77。
    • 右子樹的中序為 12  15  19  2012\;15\;19\;20,對應先序 19  12  15  2019\;12\;15\;20。
      • 根 1919,左子樹中序 12  1512\;15、先序 12  1512\;15 → 根 1212,右子 1515。
      • 右子 2020。

得到的樹如圖(省略圖形),最高路徑為
10→1→5→210 \rightarrow 1 \rightarrow 5 \rightarrow 2(或

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 22 題

(複選) Which of the following are TRUE?
A. Backtracking invokes recursion.
B. Divide and conquer invokes recursion.
C. Dynamic programming invokes recursion.
D. Topological sort is not solvable in linear time.

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題比較三種常見演算法設計方法與遞迴的關係,並考察拓撲排序的時間複雜度。

  • Backtracking(回溯法):逐步建立解答,遇到不符合條件時撤銷選擇,通常以遞迴搜尋狀態樹。
  • Divide and conquer(分治法):將問題分割成較小的同類型子問題,遞迴解決後再合併結果。
  • Dynamic programming(動態規劃):利用最佳子結構與重疊子問題,儲存已計算結果以避免重複計算;可採遞迴,也可採迭代。
  • Topological sort(拓撲排序):對有向無環圖排序,使每條邊 u→vu\to v 中,uu 都排在 vv 之前。

解題方法

判斷前面三個選項時,關鍵是辨認「遞迴是否為該方法的核心典型特徵」,以及該敘述是否宣稱「必然」使用遞迴。

判斷拓撲排序時,直接計算其標準演算法的時間複雜度。使用鄰接串列時,頂點與邊各只需處理有限次,因此可達到

O(∣V∣+∣E∣)O(|V|+|E|)

這就是相對於輸入大小的線性時間。

選項分析

A. Backtracking invokes recursion.

正確。

回溯法通常以遞迴實作。每一層遞迴代表做出一個選擇,遞迴深入下一個狀態;若該選擇導致無解,便撤銷選擇並嘗試其他分支。

例如排列問題的概念流程如下:

  1. 選擇一個尚未使用的元素。
  2. 遞迴處理下一個位置。
  3. 遞迴返回後取消該元素的使用狀態。

因此,回溯法的搜尋結構本質上是一棵狀態樹,遞迴是其標準實作方式。即使實際程式改用明確的堆疊模擬,仍然是在模擬遞迴搜尋。

B. Divide and conquer invokes recursion.

正確。

分治法的標準流程是:

  1. 將原問題分割為較小的同類型子問題。
  2. 遞迴解決各子問題。
  3. 合併子問題的解答。

例如合併排序的時間複雜度滿足

T(n)=2T(n2)+O(n)T(n)=2T\left(\frac{n}{2}\right)+O(n)

其中 2T(n/2)2T(n/2) 表示遞迴處理兩個子陣列,O(n)O(n) 表示合併成本,因此

T(n)=O(nlog⁡n)T(n)=O(n\log n)

分治法可用非遞迴程式碼模擬,但其設計概念是透過遞迴逐層分割問題,所以本選項正確。

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 23 題

(複選) In a connected graph with no loops or multiple edges, if this graph has v vertices and e edges, which of the following are correct?
A. e≤1e \le 1
B. e≥v−1e \ge v-1
C. v≤e2+1v \le e^2 + 1
D. v≥e/2v \ge e/2
E. e≥v2e \ge v^2

登入後即可作答並保存紀錄。

這一題的完整詳解

概念

  • 連通簡單圖(無迴路、無重邊)之最少邊數為生成樹的邊數:
    emin⁡=v−1e_{\min}=v-1
  • 最大邊數為完全圖:
    emax⁡=v(v−1)2e_{\max}= \frac{v(v-1)}{2}

判斷

A. e≤1e\le 1
 不一定;若 v≥3v\ge3 必須至少 e=v−1≥2e=v-1\ge2。✗

B. e≥v−1e\ge v-1
 由生成樹的下界直接得出。✅

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 24 題

(複選) A directed graph G = (V, E) has vertex set: V={v0,v1,v2,v3,v4,v5,v6}V = \{v0, v1, v2, v3, v4, v5, v6\} and edge set: E={(v0,v2),(v1,v0),(v1,v3),(v3,v0),(v3,v2),(v3,v5),(v3,v6),(v4,v1),(v4,v3),(v4,v6),(v5,v2),(v6,v5)}E = \{(v0, v2), (v1, v0), (v1, v3), (v3, v0), (v3, v2), (v3, v5), (v3, v6), (v4, v1), (v4, v3), (v4, v6), (v5, v2), (v6, v5)\}, and the weights of the above edges are 4, 2, 3, 1, 2, 8, 4, 10, 2, 7, 2, 1, respectively. Which of the following are TRUE?
A. The shortest weighted path from v4 to v5 has weight 7.
B. Starting from v4, then using the standard weighted shortest path algorithm, the last vertex to be reached is v1.
C. Starting from v4, then using the acyclic weighted shortest path algorithm, the last vertex to be reached is v2.
D. Starting from v4, then using the acyclic weighted shortest path algorithm, the last vertex to be reached is v1.
E. If the above graph were undirected, then the cost of the minimum spanning tree is 10.

登入後即可作答並保存紀錄。

這一題的完整詳解

圖形資訊
頂點 V={v0,…,v6}V=\{v_0,\dots ,v_6\},有向邊與權重

邊權重
(v0,v2)(v_0,v_2)4
(v1,v0)(v_1,v_0)2
(v1,v3)(v_1,v_3)3
(v3,v0)(v_3,v_0)1
(v3,v2)(v_3,v_2)2
(v3,v5)(v_3,v_5)8
(v3,v6)(v_3,v_6)4
(v4,v1)(v_4,v_1)10
(v4,v3)(v_4,v_3)2
(v4,v6)(v_4,v_6)7
(v5,v2)(v_5,v_2)2
(v6,v5)(v_6,v_5)1

A. 從 v4v_4 到 v5v_5 的最短加權路徑長度為 7

可能的路徑

  • v4 ⁣→ ⁣v3 ⁣→ ⁣v6 ⁣→ ⁣v5v_4\!\to\!v_3\!\to\!v_6\!\to\!v_5:2+4+1=72+4+1=7
  • v4 ⁣→ ⁣v6 ⁣→ ⁣v5v_4\!\to\!v_6\!\to\!v_5:7+1=87+1=8
  • v4 ⁣→ ⁣v3 ⁣→ ⁣v5v_4\!\to\!v_3\!\to\!v_5:2+8=102+8=10

最小為 77,故 A 為真。


B. 以標準 Dijkstra 演算法(從 v4v_4)最後被「確定」的頂點是 v1v_1

Dijkstra 步驟(距離 dd):

取出更新後 dd
v4  (0)v_4\;(0)d(v1)=10,  d(v3)=2,  d(v6)=7d(v_1)=10,\;d(v_3)=2,\;d(v_6)=7
🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

第 25 題

(複選) Assume a binary tree has five nodes and the root node is A. A has left child B and right child C. B has left child D and right child E. Which of the following are TRUE?
A. The level order traversal of the tree is ABCDE
B. The inorder traversal of the tree is DBEAC
C. The inorder traversal of the tree is ABCDE
D. The preorder traversal of the tree is ABCDE
E. The height of the tree is 3

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查二元樹的三種走訪方式,以及樹高的定義。

樹的結構如下:

        A
       / \
      B   C
     / \
    D   E

三種走訪規則:

  • Level order(層序走訪):由上到下、由左到右,通常使用佇列。
  • Preorder(前序走訪):根 → 左子樹 → 右子樹。
  • Inorder(中序走訪):左子樹 → 根 → 右子樹。

本題採常見考試定義:根節點位於第 1 層,樹高等於最深層數,也就是最長根葉路徑上的節點數。

解題方法

先依樹的層次列出節點:

  • 第 1 層:AA
  • 第 2 層:B,CB, C
  • 第 3 層:D,ED, E

因此可直接推得層序走訪。

再依照根、左子樹、右子樹的順序,分別進行前序與中序走訪:

前序:

A→B→D→E→CA \rightarrow B \rightarrow D \rightarrow E \rightarrow C

所以結果為:

ABDEC\text{ABDEC}

中序時,先走訪 BB 的左子樹 DD,再訪問 BB,接著訪問 BB 的右子樹 EE;完成左子樹後訪問根 AA,最後訪問右子樹 CC:

D→B→E→A→CD \rightarrow B \rightarrow E \rightarrow A \rightarrow C

所以結果為:

DBEAC\text{DBEAC}

選項分析

A. The level order traversal of the tree is ABCDE

正確。

層序走訪依照「由上到下、同層由左到右」的順序:

A→B→C→D→EA \rightarrow B \rightarrow C \rightarrow D \rightarrow E

因此層序走訪為 ABCDE。

B. The inorder traversal of the tree is DBEAC

正確。

🔒

後續完整解題步驟與【答案】

免費註冊,享三天全站完整詳解閱覽。

免費註冊

其他考古題