UVA 1326 Jurassic Remains:技巧枚舉 + 位運算求最大合法骨骼子集
問題描述 N ≤ 24 塊骨頭,每塊有若干關節標籤(大寫字母 A-Z)。同字母標籤的關節必須配對連接。選擇最大子集,使得所有標籤出現次數均為**偶數**(可完美
UVA 156 反語片:字母重排分組與唯一詞輸出
問題描述 讀入單詞列表(以 `#` 結束),忽略大小寫。若某單詞在列表中**沒有其他單詞與其字母重排相同**(即不同構詞),則輸出該單詞。輸出按字典序排序。
HDU 1116 歐拉路判定:有向圖入出度與連通性檢查
問題描述 給定 n 個單詞,每個單詞視為一條有向邊:首字母 → 尾字母。判斷是否存在歐拉路(恰好走完所有邊一次)。 有向圖歐拉路充要條件 **弱連通**:忽
UVA 11806 Cheerleaders:容斥原理計算矩陣邊界放石子方案數
問題描述 在 n×m 矩陣中放 k 個石子(每格至多一個),要求**第一行、最後一行、第一列、最後一列**每行/列至少有一個石子。求方案數模 1,000,007
HDU 2602 Bone Collector:經典 0/1 背包問題
問題描述 N 根骨頭,每根有價值 `v_i` 和體積 `w_i`。背包容量 V。求最大總價值。N, V ≤ 1000。多測試用例。 0/1 背包 DP 狀態
HDU 2709 Sumsets:2 的冪次分拆計數 DP 找規律
問題描述 將正整數 N 表示為若干個 2 的冪次之和(可重複),順序不計。求表示方法數,模 1e9。N ≤ 1,000,000。 規律發現與遞推公式 設 `f
UVA 400 Unix ls 命令模擬:格式化輸出文件名列表
問題描述 模擬 `ls` 輸出:給定 n 個文件名(長度 ≤ 60),按字典序排序,按列輸出。列寬 = 最長文件名長度 + 2(最後一列不加 2)。列數盡可能多
C++ 基礎細節(二):引用、const、字符串、函數、類全方位解析
1. 引用 vs 指針 引用是對象別名,**非對象**,不佔內存,必須初始化,不可重新綁定。 指針是對象,可賦值、拷貝、為空,無需初始化。 `int &ref
POJ 3159 Candies:差分約束系統與 SPFA (棧優化) 求解
問題描述 n 個孩子分糖果,滿足 m 個約束 `a b x`:第 b 個孩子糖果數 - 第 a 個孩子糖果數 ≤ x。求第 1 個孩子比第 n 個孩子**最多*
C++ 函數參數傳指針再探:值傳遞本質與修改策略
經典錯誤代碼 void GetMemory(char *p) { p = new char[20]; } void Test() { char *st
Windows 命令行參數解析:移植 getopt (wingetopt) 實現
背景 標準 C 庫 `getopt`/`getopt_long` 僅在 POSIX 系統可用。Windows 下需自行實現或移植。本文提供一個輕量級 `wing
Python 合併文本文件示例:按姓名排序輸出員工獎金
任務描述 兩個文件:`employee.txt`(工號 姓名),`bonus.txt`(工號 獎金)。合併輸出:工號 姓名 獎金,按姓名首字母排序。 數據樣例
C/C++ 中使用 π (M_PI) 的正確姿勢
標準做法 在包含 `` 或 `` **之前**定義 `_USE_MATH_DEFINES`(MSVC 專有),即可使用 `M_PI`、`M_E` 等常量。
Windows 下用 Qt WebKit 解析 HTML:環境配置與實戰代碼
開發環境搭建 安裝 Visual Studio 2010。 安裝 Qt 5.2 (MSVC 2010, OpenGL 版);路徑如 `C:\Qt\Qt5.2.
C++ 遞歸求解 N 個元素的所有子集:位掩碼與遞歸雙視角
問題 給定字符集合(如 abc),輸出所有子集(冪集),包括空集。元素數 N ≤ 20。 方法一:遞歸回溯(決策樹) 對每個元素做「選/不選」二元決策,深度
初學 C++ 心得:語法細節決定成敗,善用標頭檔與迴圈
許多人覺得 C++ 難學(相對 C 語言),初學時我也是如此:不懂為何要引入標頭檔、為何 main 開頭固定幾行、迴圈怎麼寫、大括號放哪裡、怎麼讀多組測資、陣列
STL list::erase() 正確用法與迭代器失效避坑指南
std::list::erase() 會刪除指定迭代器指向的節點,並使該迭代器失效。若刪除後繼續使用原迭代器(如 it++),將導致未定義行為。 ✅ 正確寫法
StrTrim() 使用陷阱:字串適用,Blob 欄位慎用
StrTrim() 本身無害,專門用於移除字串首尾空白字元。但若直接套用於資料庫 Blob(二進位大物件)欄位,會導致資料內容被非預期修改,造成嚴重後果。 適用