Effective C++ 條款 13:以對象管理資源(RAII)完整實戰指南
核心思想 通過對象析構函數自動釋放資源,消除資源洩漏。關鍵點:獲取資源即初始化(RAII) — 在構造函數中獲取資源,析構函數中釋放,利用 C++ 確定性的析構
POJ 2590 / ZOJ 1871 Steps:最少步數問題數學規律與 O(√n) 解法
問題描述 從點 a 移動到點 b,每步長度與前一步差值 ≤ 1,首尾步長必為 1。求最少步數。多測試用例,POJ 首行給 T,ZOJ 直接 EOF 結束。 數
LeetCode Generate Parentheses:括號生成問題遞歸回溯完整解析
問題描述 給定 n 對括號,生成所有合法的括號組合。合法定義:任意前綴中左括號數 ≥ 右括號數,且總數相等。例如 n=3 時輸出:[((())),(()()),
C++11 核心特性深度解析:constexpr、變長模板、原子操作與線程局部存儲
1. constexpr:編譯期常量與函數 constexpr 讓編譯器在編譯期計算表達式,可用於數組大小、模板參數等要求編譯期常量的上下文。 函數限制 函
C++ 並發實戰:線程安全的 Stack 與 Queue 完整實現指南
線程安全容器設計核心原則 不變量在鎖保護下不被破壞 合併複合操作(如 top+pop)避免競態 異常安全:構造/析構在鎖外完成 縮小臨界區,降低鎖粒度 避免死
矩陣鏈乘法問題:動態規劃求最優括號化順序完整解析
問題背景 給定矩陣鏈 A₁A₂…Aₙ,矩陣 Aᵢ 維度為 p[i-1] × p[i]。矩陣乘法滿足結合律,但不同括號化順序的標量乘法次數差異巨大。目標:找到最小
二項式係數計算:遞歸、二維 DP 與一維空間優化完整指南
定義與應用 二項式係數 C(n,k) 定義為: (1+X)ⁿ 展開式中 Xᵏ 的係數 從 n 個不同元素中無序選取 k 個元素的方案數 遞歸定義:C(n,k
0-1 背包問題完整解析:遞歸、動態規劃與空間優化(Java 實現)
問題描述 給定 n 個物品,第 i 個物品重量 wt[i]、價值 val[i],背包容量 W。每個物品只能選或不選(0-1 性質),求裝入背包的最大總價值。
排列算法分析與 C/Objective-C 實現:旋轉法遞歸生成全排列
排列定義 從 n 個不同元素中取出 m (m ≤ n) 個元素,按一定順序排成一列,稱為一個排列。兩個排列相同當且僅當元素完全相同且順序相同。例如 1,2,3
C++ 全排列算法原理深度解析:從遞歸到去重與非遞歸實現
為什麼要掌握全排列 全排列是筆試面試高頻考點,難度適中,既能考察遞歸思維,又能延伸至非遞歸、去重、Lexicographical 次序生成等進階主題,是區分候選
UVALive 4015 Caves:樹形 DP 解決根節點距離限制下的最大訪問節點數
問題描述 給定一棵 n 個節點的有根樹,邊權為正整數表示距離。從根節點出發,總路徑長度不超過 x,求最多能訪問多少個不同節點(重複經過只算一次)。需回答多組查詢
USACO Transformations:方陣變換問題完整解析與C++實現
問題背景 USACO 經典問題 Transformations 要求判斷一個 N×N 的黑白方陣(1 ≤ N ≤ 10)經過何種最小變換得到目標方陣。變換類型按
HDU 2577 How to Type 最少按鍵次數 DP/貪心雙解
輸入一字符串(含大小寫),需輸出該字符串。大寫可用 Shift+字母 或 Caps Lock 切換後輸入小寫再切回。初始與結束狀態均為 Caps Lock 關閉
POJ 1458 / ZOJ 1733 Common Subsequence 最長公共子序列 (LCS)
經典 LCS 問題:給定兩字符串,求最長公共子序列長度。|A|,|B| ≤ 500。標準 DP O(nm) 時間、O(nm) 空間;可用滾動數組優化至 O(mi
HDU 2151 Worm DP 螞蟻爬樹動態規劃
題目:N 棵樹排成一排,毛毛蟲從第 P 棵開始,每分鐘隨機爬到相鄰樹。求 M 分鐘後到達第 T 棵樹的方案數。 DP 狀態定義 dp[t][i]:第 t 分鐘
C/C++ 常用算法(十):選擇排序與堆排序完整實現
選擇排序通過重複選擇最小元素交換到有序區末尾實現排序。簡單選擇排序 O(n²);堆排序利用堆結構優化選擇過程至 O(n log n)。本文提供兩者完整 C++
FOJ 2141 隨機演算法求同構二分子圖
題目:給定無向圖 n 點 m 邊,找一同構子圖(即保留原圖部分頂點及其間所有邊),要求子圖邊數 ≥ m/2 且為二分圖。輸出二分圖兩側頂點集合。 隨機演算法思
LeetCode Flatten Binary Tree to Linked List 原地展開為鏈表
將二叉樹原地展開為「右鏈表」:每個節點的 left = null,right 指向先序遍歷的下一個節點。要求 O(1) 額外空間(遞歸棧除外)。 遞歸思路 定