二元樹層序遍歷:從上到下、從左到右印出節點
問題描述 給定一棵二元樹,要求從根節點開始,按層級順序(Breadth-First Search)遍歷並印出所有節點的值。同一層內的節點按照從左到右的順序輸出。
希爾排序優化快速排序:隨機化樞軸+三路劃分避免最壞情況完整實現
背景:快速排序的最壞情況 標準快排選定首元素為樞軸,在有序/逆序/重複元素多數據上退化為 O(n²)。希爾(Shell)改進非直接相關,此處「捨伍德算法」實為隨
字符串中首個僅出現一次字符:O(n) 位掩/頻率表解法完整講解
題目大意 給定字符串,找出第一個只出現一次的字符。例:abaccdeff → b。Google 2006 筆試真題。 核心思路:兩遍掃描 + 頻率表 第一遍
線性時間篩法:O(n) 復雜度求百萬內所有素數
前言 求一定範圍內的所有素數是經典算法問題。傳統埃拉托斯特尼篩法(Sieve of Eratosthenes)時間複雜度為 O(n log log n),而本文
UVA 10201 Adventures in Moving Part IV:動態規劃解決加油站最小費用問題
題目大意 汽車油箱容量 100 單位(對應 200 半單位),起始油量 100(半單位 100)。沿路有加油站,每站有位置、單價。車每單位距離耗 1 單位油(半
NYOJ 312 20歲生日:日期天數計算含閏年邊界條件完整解析
題目大意 輸入出生日期 YYYY-MM-DD,計算從出生到 20 歲生日(含生日當天?題意為經過天數)的總天數。若 20 歲生日不存在(如 2月29日出生但 2
POJ 3020 Antenna Placement:二分圖最大匹配黑白染色法完整講解
題目大意 N×M 網格(N,M≤40),* 表示需覆蓋的格子。天線覆蓋 1×2 或 2×1 兩相鄰格子。求覆蓋所有 * 所需最少天線數。多測試用例。 模型轉換
HDU 4550 卡片游戲:貪心構造最小數字完整解析
題目大意 N 張疊放卡片(N≤100),每張寫 0~9 數字。規則: 1. 先拿最上牌放桌面 2. 之後每張牌只能放現有序列最左或最右 3. 最終序列首位不能為
HDU 2391 斜數塔:動態規劃 O(nm) 求最大路徑和完整講解
題目大意 給定 n 行 m 列的數字塔(實際為矩陣),從左上角 (1,1) 走到右下角 (n,m)。每步只能向右、向下、或右下斜向移動。求路徑上數字和的最大值。
HDU 2544 最短路:SPFA 算法求解無向圖單源最短路徑
題目大意 N 個路口(≤100),M 條雙向道路(≤10000),每條路有耗時 C(≤1000)。1 號路口為起點(商店),N 號為終點(賽場)。多組測試,0
XMU 1246 素數篩選:區間篩法 O((B-A) log log B) 完整解析
題目大意 多組測試,每組給定區間 [A, B](0 < A ≤ B < 2³¹,B-A < 2²⁰),求區間內素數個數。T < 10。常規篩法到 B 會爆內存/
HDU 4553 約會安排:線段樹雙區間維護首次適應算法完整解析
題目大意 小明有 T 單位時間。三類操作: • DS len:屌絲請求,按「首次適應」找最左連續空閒段,成功輸出 start,lets fly,否則 fly w
C 語言 #line 預處理指令:修改 __FILE__ __LINE__ 實戰演示
什麼是 #line 指令? #line 是 C/C++ 預處理指令,用於重置編譯器內部的行號(__LINE__)和文件名(__FILE__)。語法: #line
FTP 客戶端斷點續傳核心模塊實現詳解(C 語言 Socket 編程)
專案背景 大二暑假獨立完成的首個 C 語言網絡項目:實現 FTP 客戶端基本功能,重點攻克斷點續傳。運行環境 Linux,使用 POSIX Socket API
排它平方數問題:六位數獨特數字且平方不含原數字完整求解
題目複述 尋找一個六位正整數,滿足: 1. 六位數字互不相同 2. 其平方數的所有數位均不包含原數字的任何數位 已知 203879 滿足條件(203879² =
POJ 1330 最近公共祖先:倍增法 LCA O(log N) 完整模板講解
問題定義 給定一棵 N 個節點的有根樹(N ≤ 10,000),多組查詢(單次查詢),求兩節點的最近公共祖先(LCA)。倍增法預處理 O(N log N),單次
POJ 1979 Red and Black:DFS 連通分量計數經典題完整講解
題目大意 給定 W×H 的網格地圖(W,H ≤ 20),字符含義: . 黑磚(可通行) # 紅磚(阻擋) @ 起點(黑磚,唯一) 從起點出發,只能上下左右移動到