POJ 1664 放蘋果問題:遞歸與動態規劃解法詳解
問題描述 將 M 個相同的蘋果放入 N 個相同的盤子中,允許盤子為空。問有多少種不同的分法(用 K 表示)?注意:5、1、1 和 1、5、1 被視為同一種分法。
從零手寫 C 語言 LL(1) 語法分析器:詞法分析、First/Follow 集構建與預測分析表生成全過程
專案簡介 本專案使用 C++ 實現了一個完整的 C 語言子集編譯前端,包含詞法分析器與LL(1) 語法分析器。核心特性: 採用自頂向下 LL(1) 文法,文法
深入理解 Linux 庫文件結構與 nm 命令實戰解析
前言 在 Linux 環境下進行 C/C++ 開發時,我們不可避免地會接觸到 .o、.a、.so 這類中間庫文件。無論是自行編寫庫供他人調用,還是將源碼嵌入他人
C++ 函數調用棧幀結構深度解析:VS2008 反彙編實證與《程序員的自我修養》糾錯
實驗環境 VS2008 Debug 構建,關閉優化(/Od),反彙編單步調試觀察內存/寄存器變化。 測試代碼 int foo(int i) { int
棧應用:十進制轉任意進制(2-16)通用實現
算法原理 「除基取餘,逆序輸出」天然適合棧:餘數入棧,最後出棧即得正確順序。支援 2-16 進制,10-15 對應 A-F。 棧模板 SqStack temp
C++ 跟蹤調試技術:RAII 風格 Trace 類的兩種實現與優化
基本版:字符串成員 class Trace { public: Trace(const string& name) : funcName(name) {
C++ STL 容器速查:分類、常用操作與查找重複元素實戰
容器分類總覽 類別容器特點典型場景 順序容器vector動態數組,尾部增刪 O(1),隨機訪問 O(1)首選容器,需頻繁隨機訪問 deque雙端隊列,首尾增刪
UVa 116 Unidirectional TSP:動態規劃求最小權路徑並輸出字典序最小解
問題描述 n 行 m 列矩陣,從第 1 列任意行出發,每步可移至下一列的同行、上一行(循環)、下一行(循環)。求從左到右的路徑權值和最小;若多解,輸出行號序列字
POJ 2481 Cows:樹狀數組離線處理矩形包含關係
問題大意 n 個矩形,每個由左下角 (l, r) 表示(實為 x, y)。對每個矩形,統計有多少其他矩形被它嚴格包含(即 l ≥ l 且 r ≤ r)。輸出每個
Boost.Any 簡化實現:政策基類 + 靜態多態的輕量級 Any 容器
設計動機 Boost.Any 功能強大但代碼龐大、編譯慢。針對嵌入式/舊編譯器環境,實現一個精簡版: 僅作為類型擦除容器,不提供運行時類型檢查(RTTI) 假
UVa 10970 Big Chocolate:記憶化遞歸與數學規律雙解
問題描述 m×n 塊巧克力,每次只能沿網格線掰開一塊成兩塊。求分成 1×1 小塊所需的最少掰開次數。 解法一:記憶化遞歸 int d[305][305]; i
POJ 2299 Ultra-QuickSort:樹狀數組 + 離散化求逆序對
問題大意 給定長度 n ≤ 500,000 的序列,求逆序對數(即需交換相鄰元素使有序的最小次數)。數值範圍大,需離散化。 離散化步驟 結構體存原值 `nu
UVa 10340 All in All:雙指針判斷子序列
問題描述 給定字符串 a, b,判斷 a 是否為 b 的子序列(字符順序一致,不必連續)。多組輸入,EOF 結束。 解法:雙指針線性掃描 b) {