HDU 2553 N 皇後問題:經典 DFS 回溯求解
問題描述 在 N×N 棋盤上放置 N 個皇後,使任意兩個皇後不在同一行、同一列、同一條對角線上(45°)。求合法放置方案數。N ≤ 10,多測試用例,N=0 結
LeetCode Permutations II:含重複元素的全排列去重
問題描述 給定一個可能包含重複數字的序列,返回所有不重複的全排列。例如 [1,1,2] 的不重複排列有:[1,1,2]、[1,2,1]、[2,1,1]。 核心
ZOJ 3816 數位 DP + DFS:壓縮回文數構造
ZOJ 3816 題目解析 問題描述 給定一個數 n,從比 n 小的數中選出最大的,滿足:「壓縮後是回文數」。壓縮規則:連續相同數字只算一個。例如 1221 壓
C++ 實現輕量級狀態機框架:從理論到實戰
為什麼需要狀態機? 許多開發者質疑:為什麼不用 if-else 而要引入狀態機?實際上,if-else 也是狀態機的一種實現方式。但對於大型複雜邏輯的變化和跳轉
BZOJ 2054 瘋狂的饅頭:並查集優化區間染色
BZOJ 2054 瘋狂的饅頭題解 這道題目要求對序列進行多次區間染色操作,最終查詢每個點的顏色。數據範圍 m ≤ 10^7,普通線段樹會超時,必須採用更優化的
HDU 2844 多重背包:二進制優化完全解析
HDU 2844 多重背包問題詳解 這道題目是經典的多重背包問題,核心在於理解二進制拆分優化的應用。透過這道題,我深刻體會到將背包九大類型代碼模板化的重要性,能
C++ 默認構造函數深度解析:合成規則、初始化列表與陷阱
默認構造函數定義 默認構造函數是「無參數」或「所有參數有默認值」的構造函數。當創建對象未提供初始化器時自動調用。 編譯器合成條件 編譯器不會為所有類自動生成默
BZOJ 3904 最長鋸齒子序列:線段樹優化 DP
問題建模 給定序列 a[1..n],求最長子序列,滿足: 1. 以較小值開始; 2. 相鄰兩項差值 ≥ k; 3. 呈鋸齒狀(大、小、大、小…交替)。 DP
UVA 10670 Work Reduction:貪心策略求最小成本
問題描述 初始工作量 N,目標減至 M。有 L 個機構,每機構提供兩種方案: A 元減 1 單位工作量;B 元減半(向下取整)。 求各機構達成目標的最小成本,按
UVA 1452 Jump 動態規劃解題報告
題目鏈接 UVA 1452 - Jump 題意簡述 給定一個數組,每個元素表示從該位置最多能向前跳躍的步數。求從起點跳到終點的最少跳躍次數。若無法到達輸出 -
對象工廠進階實現:基於 boost::any 的類型擦除與完美轉發
痛點回顧 舊版工廠用 void* 存儲不同簽名的創建函數,導致: 需為每種函數類型單獨維護 vector,代碼冗餘。 註銷時丟失類型信息,強迫用戶提供模板參數
小學生四則運算題目生成器:C/C++設計思想與參數化實現
需求分析 開發一款面向小學生的四則運算題目生成工具,核心需求如下: 去重:生成題目不重複 可定制輸出:支持指定題量、打印排版方式 參數化控制:涵蓋運算類型、數
C++ 模板靜態成員定義與實例化:特化 vs 隱式實例化
問題背景 模板類包含靜態成員時,其定義(實例化)方式直接影響編譯鏈接行為。以 template<typename T> class Test { s
HUST 1017:Exact Cover - 舞蹈鏈 (DLX) 算法精確覆蓋問題
HUST 1017:Exact Cover - 舞蹈鏈 (DLX) 算法精確覆蓋問題 給定 N×M 0-1 矩陣(N,M ≤ 1000),選擇若干行,使每列恰好
GMock 模擬非虛函數:依賴注入 + 模板類重構實現可測試性
GMock 模擬非虛函數:依賴注入 + 模板類重構實現可測試性 生產代碼中類方法多為非虛函數,單元測試時無法直接用 GMock 模擬。通過依賴注入 (DI) 和
C++ 實現 State Monad:函數式編程狀態單子模板
C++ 實現 State Monad:函數式編程狀態單子模板 使用 C++11 模板元編程實現 Haskell 風格的 State Monad,支持狀態線程安全