iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

學習C++必備!30 天演算法入門到進階 + CSES 與 Leetcode 實戰 系列

本系列將以 C++ 為主要開發語言,結合演算法理論、STL、以及兩大經典題庫 CSES Problem Set 與 LeetCode 進行實戰演練。
內容安排由淺入深:
第一週:STL、排序、雜湊、前綴和等基礎演算法
第二週:雙指標、貪心、搜尋、BFS/DFS
第三週:動態規劃 (DP) 系列專題
第四週:圖論進階、字串演算法與綜合實戰
每天將透過理論解析 → C++ 實作 → 題目演練的方式,幫助讀者一步步掌握演算法核心思維,並透過實戰提升解題能力。

參賽天數 30 天 | 共 30 篇文章 | 0 人訂閱 訂閱系列文 RSS系列文
DAY 11

Day 11 — BFS 入門(最短路徑、迷宮遍歷)

一、學習目標 了解 BFS(Breadth-First Search) 在無權圖求最短邊數路徑的原理與不變量。 熟悉四種常見套路:網格 BFS、一般圖 BFS...

2025-09-03 ‧ 由 lichengen 分享
DAY 12

Day 12 — DFS 入門(遞迴與疊代、連通塊、二分圖判定)

一、學習目標 了解 DFS 的兩種實作:遞迴與疊代(顯式 stack),何時該避免遞迴以防止棧爆。 掌握三個核心觀念:visited 標記、連通塊(conne...

2025-09-04 ‧ 由 lichengen 分享
DAY 13

Day 13 — BFS + DFS 綜合應用(迷宮/擴散 + 最短路徑判定)

一、學習目標 熟悉多源 BFS(多個起點同時擴散)與單源 BFS 的配合:先以多源 BFS 建出「危險/時間場」,再用單源 BFS 找可行最短路。 了解「BF...

2025-09-05 ‧ 由 lichengen 分享
DAY 14

Day 14 — 圖論基礎(鄰接矩陣 vs 鄰接表、遍歷應用)

一、學習目標 理解鄰接矩陣與鄰接表的差異:空間、時間、適用場合。 熟練無向/有向圖的遍歷模板(BFS/DFS,優先用疊代實作以避免遞迴棧)。 實戰:連通分量...

2025-09-06 ‧ 由 lichengen 分享
DAY 15

Day 15 — 動態規劃(DP)入門:從 0 到 1

一、學習目標 會把問題抽象成:狀態、轉移、初始值、答案位置、迭代順序(五步驟)。 熟悉一維 DP 的兩大類: 計數型(有幾種方法):例 Dice、Climb...

2025-09-07 ‧ 由 lichengen 分享
DAY 16

Day 16 — 背包問題(0/1、完全背包)

一、學習目標 理解兩大類背包:0/1(每件最多一次)vs 完全(可重複拿)。 會寫出正確的雙迴圈順序,避免重複/漏算: 0/1:容量倒序。 完全:容量正序。...

2025-09-08 ‧ 由 lichengen 分享
DAY 17

Day 17 — 最長遞增子序列(LIS)

一、學習目標 會定義 LIS(Longest Increasing Subsequence) 與「嚴格遞增 vs 非嚴格遞增」的差異。 熟練兩種做法: O(...

2025-09-09 ‧ 由 lichengen 分享
DAY 18

Day 18 — 區間 DP(Interval DP)

一、學習目標 把題目抽象成 dp[l][r]:表示處理區間 [l..r] 的最佳值/最少代價。 會寫兩大形態的轉移: 兩端取數:dp[l][r] 來自 dp...

2025-09-10 ‧ 由 lichengen 分享
DAY 19

Day 19 — 狀態壓縮 DP(子集合 DP)

一、學習目標 了解以 bitmask 表示子集合與其時間/空間複雜度 掌握 dp[mask](或 dp[mask][i])的狀態設計與轉移。 熟悉 子集合枚舉...

2025-09-11 ‧ 由 lichengen 分享
DAY 20

Day 20 — DP + 貪心混合(區間排程)

一、學習目標 分辨何時用 貪心(依結束時間排序)、何時用 DP(帶權區間排程)。 熟悉帶權區間 DP:排序、預處理 prev(相容區間)、二分查找轉移。 能將...

2025-09-12 ‧ 由 lichengen 分享