考點分析 / 師大 / 軟體

師大資工所考古題詳解軟體十年大統整(106–115)

各章配分

表中數字是各題的卷面配分,依主題加總。有子題的照子題分,沒有子題的整題算在主要考點。章與細項依十年合計排序,顏色越深,占當年總分的比例越高。C/C++ 的程式填空題依內容算在對應的資料結構(stack、linked list、binary search 等),只考語言本身的題目(113 年 gets()、字串常數、函式指標、巨集)才算在 Programming。

章/細項106107108109110111112113114115合計占比年數
Data Structures & Algorithms100100951001001001007510010097097%10
Shortest Paths & MST262520301596151015616%9
All-pairs Shortest Paths2010201510758%5
Minimum Spanning Tree20597414%4
Single-source Shortest Paths615568404%5
Algorithm Design1525252040542015415%8
Dynamic Programming15725172010949%6
Greedy320410374%4
Divide and Conquer18182%1
Recursion55<1%1
Graph Traversal41430711101032131014114%10
Representation & BFS / DFS415361029610838%8
Connectivity4551037343%6
Topological Sort & DAG10104242%3
Sorting & Searching251212212615161113814%8
Quicksort1033135343%5
Selection & Binary Search15657333%4
Merge Sort & k-way Merge15105303%3
Elementary Sorts615212%2
Heapsort436131%3
Sort Comparison & Lower Bound347<1%2
Linear Structures22410135102552011411%9
Array & Linked List1048851910646%7
Stack & Queue1210510374%4
Infix / Postfix256131%3
Trees48128512610656%8
Tree Basics & Traversal453573273%6
Binary Search Tree33310192%4
AVL Tree365141%3
Other Search Trees55<1%1
Heaps8661010310535%7
Binary Heap8631010310505%7
Advanced Heaps33<1%1
Complexity Analysis351530535%4
Asymptotic Notation3520283%3
Recurrences15152%1
Randomized Analysis10101%1
NP-Completeness101020404%3
P / NP & Reductions1010202%2
Approximation Algorithms20202%1
Network Flow1515303%2
Max Flow / Min Cut1510252%2
Bipartite Matching55<1%1
String Matching10101%1
Automaton & Other Methods10101%1
Hashing358<1%2
Collision Resolution358<1%2
Other88<1%1
Programming525303%2
C / C++ Basics525303%2
Arrays & Strings10101%1
Control Flow & Loops55<1%1
Pointers55<1%1
I/O & Formatting55<1%1
Structs & Dynamic Memory55<1%1

分數最多的是 Shortest Paths & MST(156 分)與 Algorithm Design(154 分),Graph Traversal 141 分、十年每年都有。

重複出題清單

題目出現年度
adjacency matrix 表示的圖,traversal 終止於某頂點的所有邊109 第一(3)題、110 第 3-1 題(題目相同)、114 第三(一)題
array 5 3 8 9 1 7 0 2 6 4 以 5 為 pivot 做 partition109 第一(4)題、110 第 3-3 題
hash k % 9、linear probing,插入 5、29、20、0、27、18109 第一(5)題、110 第 4 題
heap 10 8 6 2 1 4 5 做兩次 deleteMax109 第一(6)題、110 第 5 題
Floyd-Warshall 的 d_ij(k) 意義、填 D(1)、negative weight106 第 8 題、111 第 7 題(兩年 (a) 相同)、115 第 9 題(填整張表)
LCS 的暴力解、DP recurrence、填表108 第 4 題、112 第 8 題
merge sort 比暴力排序省略了哪些計算109 第六(b)題、112 第 7(a) 題(112 另問 quicksort)
AOE 網路的 critical activity107 第 5 題、109 第五題
P、NP、NP-complete 的關係107 第 8 題(Venn 圖)、108 第 6 題(reduction 方向)
greedy 演算法的理由107 第 6(b) 題(Dijkstra)、109 第七(c)題(Prim)、112 第 9(a) 題(Huffman)
negative weight 對演算法的影響106 第 8(c) 題、107 第 6(c) 題、109 第七(d)題、110 第 11 題、111 第 7(c) 題、114 第七題
binary search 的程式填空107 第 1(c) 題(遞迴)、108 第 2(c) 題(迭代)
infix 轉 postfix 用 stack106 第 2(2) 題、108 第 1.2 題、109 第三題
AVL tree108 第 1.10 題、109 第二題、113 第 10 題
binary tree 的高度、葉節點與節點數108 第 1.8 題、113 第 8(a)(b) 題、114 第三(二)題

反覆出現的兩種題型

1. 一個主題連問三到五問

同一個經典問題連續問好幾小題,106 到 114 年每年都有一到三題,115 年沒有:

年度主題問法
106 第 6 題(15 分)Randomized select第 4 行的 k 是什麼 → 最壞執行時間 → 造成最壞情況的 partition 序列
106 第 7 題(15 分)Rod cutting第 8 行存什麼 → 實際算 → 修改成回傳切法
106 第 8 題(20 分)Floyd-Warshalld_ij(k) 的意義 → D(1) → 偵測負環 → 省空間的版本是否正確
107 第 6 題(15 分)Dijkstra算的是什麼 → 為何是 greedy → 不適用的條件與例子
107 第 7 題(25 分)maximum subarray暴力解 → 跨中點的線性時間做法 → recurrence → 線性時間 DP
108 第 4 題(25 分)LCS暴力解加複雜度 → DP recurrence 加複雜度 → 填表
109 第七題(20 分)Prim用途 → 實際執行 → greedy 選擇為何最佳 → negative weight
109 第八題(15 分)max flowresidual network → 是否最大並以 cut 證明 → 多源多匯
110 第 11 題(20 分)Johnson 演算法設計理由 → reweighting → 計算 → 簡單的 reweighting 方法有什麼問題
111 第 6 題(20 分)0-1 Knapsack暴力解加複雜度 → DP recurrence → 填表 → 哪些 greedy 可行
112 第 8 題(20 分)LCS暴力解加複雜度 → DP recurrence → 填表 → 為何這個最長路徑實例是多項式
112 第 9 題(15 分)Huffman為何是 greedy → 實際建碼 → 最大碼長
113 第 13 題(30 分)bipartite graph、最大匹配DFS → 是否 bipartite graph → 判斷演算法 → max flow/min cut → 如何解最大匹配
114 第八題(20 分)TSP 2-approximation分三步證明 approximation ratio

2. 給程式碼或結構,問它做什麼

年度題目
106 第 2(1) 題六個變數名稱沒有語意的 C++ 函式,找出哪個是 stack、queue、circular queue 的 Add 或 Delete
110 第 7 題一段 while 迴圈,畫出執行後的 linked list 與 Head、middle、trail 的指向
111 第 3 題(20 分)兩個用 array 實作的資料結構 X、Y,辨認它們是什麼、搭配的搜尋程序叫什麼
113 第 1 題遞迴函式 f1(12345) 的輸出
113 第 2 題function pointer array 加 enum,執行 10 個輸入後印出的狀態
113 第 3 題描述函式 f3 的功能
113 第 6 題描述巨集 TEST 的用途

優先準備的五個主題

  1. Graph traversal。十年每年都有,包括 DFS/BFS 的拜訪順序(107、108)、DFS/BFS spanning tree(113)、strongly connected component(110)、dfn/low 與 articulation point(108、112、114)、biconnected component(106、113、114)、DFS 的邊分類(115),109 年考 adjacency matrix 表示法。
  2. Shortest path 與 negative weight。Floyd-Warshall(106 20 分、111、115)、all-pairs shortest paths 的 pseudo-code 與計算(107)、Johnson 演算法(110,20 分)、Dijkstra(106 程式追蹤、107 三問、110、113)、邊權加常數的影響(114);negative weight 會讓哪些演算法出問題,六年問過。
  3. Dynamic programming。rod cutting(106)、maximum subarray(107)、LCS(108 25 分、112 20 分)、knapsack(111 20 分)、matrix-chain(115)。暴力解、recurrence、填表這個問法反覆出現。
  4. Heap、sorting 與 binary tree 的基本操作。108、109 年的選擇題與 110 年的選擇題大多是這類,109 與 110 年有四小題相同。
  5. C 程式填空與追蹤:stack 與 queue 的函式辨認、quicksort 與 shortestpath(106)、binary search(107、108)、sparse matrix 轉置與 circular linked list(112)、linked list 與 threaded tree(110)、用 linked list 實作 queue 與 Dijkstra(113)、stack 與 linked list 合併(114)。

考試形式

  • 全卷 4–7 頁、6–13 題
  • 作答於答案卷
  • 卷面固定註明「請依序在答案卷上作答,並標明題號,不必抄題」「答案必須寫在指定作答區內,否則依規定扣分」
  • 卷面十年都沒寫倒扣
  • 108、109 年有選擇題,卷面另外提醒選擇題要寫在「作答區」、不要寫在「評分欄」
  • 115 年是 10 題、每題 10 分

題型演變

年度題數頁數C/C++ 程式碼題最大單題
1068731 分(第 2、3、4(2)、5(1) 題)Floyd-Warshall 四問(20 分)
107856 分(第 1(c)(d) 題)maximum subarray 四問(25 分)
1086 大題615 分(第 2 題,其中 (c) 是 Java 寫法)選擇題 12 小題(28 分)、LCS 三問(25 分)
1098 大題70 分選擇題 9 小題(27 分)、Prim 四問(20 分)
11011610 分(第 7、8 題)Johnson 演算法(20 分)、merge sort 與 quick sort(20 分)
111740 分Knapsack 四問(20 分)、兩個 array 實作的資料結構(20 分)
11210629 分(第 1、2、6 題)LCS 四問(20 分)
11313749 分(第 1–4、6、7、8(c)、11、12 題)bipartite graph 與最大匹配(30 分)
1148 大題520 分(第一題)第一題填空(20 分)、TSP 2-approximation 證明(20 分)
1151060 分每題都是 10 分

C/C++ 程式碼題指題目給 C 或 C++ 程式碼,要填空、追蹤輸出或自己寫的題目,pseudo-code 不計。113 年最多,題目有 gets()、字串常數、function pointer array、巨集與圍棋氣數函式。109、111、115 年沒有 C 或 C++ 程式碼題,題目都是 pseudo-code 與演算法分析。

成組的選擇題出現在 108 年(第 1 題 12 小題,單選加複選)、109 年(第一題 9 小題)、110 年(第 3 題 5 小題)、114 年(第三題 4 小題)與 115 年(第 6 題),其他年度只有零星的可複選小題(111 第 6(d) 題、112 第 4(b) 題)。

給 116 年考生的準備方向

  • 卷面十年都沒寫倒扣,每一題都要寫。115 年第 6 題是選擇題,卷面寫明答案要完全正確才得分;108 年的複選題卷面沒寫給分方式。
  • 答案要標明題號、寫在指定作答區內,不必抄題;108、109 年的選擇題另外提醒要寫在作答區。
  • 106 第 8(d) 題、107 第 6(b) 題、108 第 6 題、109 第七(c)題、110 第 11(a)(i)、(d) 題、112 第 8(d) 題、112 第 9(a) 題這類題目問的是設計理由,要練習把每一步的理由寫出來。
  • 110 第 11(d) 題考邊權減去常數對 shortest path 的影響,114 第七題考邊權加上常數對 MST 與 shortest path 的影響。
  • 115 年是 10 題、每題 10 分,沒有 C 或 C++ 程式碼題。

本頁的題型、配分都取自各年度試卷上的標示,各章配分是逐題分類後加總的。如果發現有誤,歡迎來信指正。

各年度考點分析

最後更新:2026-10-22

想看完整逐題詳解?

國立臺灣師範大學 106–115 全年度完整詳解共 309 頁,逐題推導。

購買 · NT$ 850 先看試閱

聯絡我們

題目有錯、詳解看不懂,都歡迎來信

想許願補哪一份、對購買有疑問也可以,收到後會盡快回覆。

william.chou.123123@gmail.com