📚 由淺至深

寫給第一次學演算法的同學

把演算法從「天書」
變成可以打的遊戲

紙上考不及格沒關係。這裡用生活類比、動畫圖解、考前速翻, 把每個演算法拆成你一看就懂的小步驟。先看故事,再看圖,最後才看程式碼。

🍳
生活類比開場
每個演算法都從你做過的事講起
🎬
動畫看一遍
不是死讀公式,是看著它跑
📝
考試會這樣考
每章附紙筆考試常見題型

課程地圖

建議按順序看,但你也可以跳到想複習的章節。

基礎

排序與搜尋

進階技巧

圖論

12 基礎

圖論入門:點和線的世界

捷運路線圖、臉書好友、地圖導航——背後都是圖。先把詞彙學會,後面 BFS / DFS 才有意義。

約 12 分鐘
13 中等

BFS 和 DFS:走迷宮的兩種策略

BFS 像一圈一圈往外擴散,DFS 像鑽進去一條路走到底。兩種搜尋圖的最基本工具。

約 20 分鐘
14 進階

Dijkstra:Google Maps 怎麼幫你算最短路

有權重的圖找最短路徑,BFS 不夠用。Dijkstra 像水從起點以「實際距離」擴散。

約 18 分鐘
22 中等

拓撲排序:先穿襪子才穿鞋

課程預修順序、做菜步驟、編譯依賴——把「先做後做」變成一個合法的線性順序。

約 12 分鐘
23 進階

Bellman-Ford:負邊也能算最短路

Dijkstra 怕負邊,Bellman-Ford 不怕。代價是慢——O(V × E),但能偵測負環。

約 15 分鐘
24 進階

Floyd-Warshall:算所有點對的最短路

三層 for 迴圈,五行 code,算出任兩點之間的最短距離。O(V³) 簡單暴力。

約 12 分鐘
25 進階

最小生成樹:用最少的錢連起所有村莊

全村要接網路,怎麼挑最少的線路費用?這就是 MST。Kruskal 和 Prim 兩種解法都常考。

約 18 分鐘
31 進階

網路流:水管最多能流多少水?

從水庫到城市,中間有很多水管各有容量上限。每秒最多能送多少水?這是 Max-Flow 問題。

約 18 分鐘
32 進階

A* 搜尋:有第六感的 Dijkstra

一般 Dijkstra 像盲人摸象往四周試。A* 知道「終點大概在那邊」,所以優先往那走。遊戲、GPS 的核心。

約 15 分鐘

資料結構

字串

總複習