網格路徑計數:組合數學與遞歸 DP 雙視角
問題描述 m×n 網格(m 橫向段,n 縱向段),從左下角 A 走到右上角 B,只能向上或向右移動。求不同路徑總數。 遞歸關係 設 f(m,n) 為 m×n
移動字母遊戲:2×3 輪盤狀態可達性判定
問題描述 2×3 方格放入 A,B,C,D,E 五字母,右下角為空格(*)。初始狀態 ABCDE*。字母可移動到相鄰空格。給定若干目標狀態串(如 AB*DEC)
POJ 2559 最大矩形面積:直方圖中最大矩形 O(N) 算法
問題描述 給定直方圖寬度為 1 的 N 個柱子高度,求能構成的最大矩形面積。N≤100000,高度≤1e9。 方法一:DP 記錄左右第一個更矮柱子 對每個柱子
LeetCode Distinct Subsequences:二維 DP 計算子序列出現次數
問題描述 給定字符串 S 和 T,求 S 中有多少個子序列等於 T。子序列不要求連續,但順序保持。結果可能大,題目未要求取模(LeetCode 原題返回 int
Wikioi 1081 線段樹練習 2:區間加、單點查詢懶標記模板
問題描述 序列長度 n,初始值給定。操作: 1 a b s:區間 [a,b] 加 s。 2 s:查詢位置 s 當前值。 多測試案例,n≤100000,操作數 q
C++ Primer 學習筆記:重載自增/自減操作符
前置與後置區別 前置 `++obj` / `--obj`:返回引用 `T&`,先修改後返回。*this。 後置 `obj++` / `obj--`:返回值 `
遞歸與循環轉換:用遞歸重寫數組求最大值循環
原循環代碼 int[] a = {3,5,2,8,16,3,9,17}; int max = a[0]; for (int i=1; i max) max =
C++ Primer 學習筆記:重載調用操作符與函數對象
重載調用操作符 `operator()` 類若重載 `operator()`,其對象稱為函數對象(仿函數),可像函數一樣調用:`obj(args)`。 語法:`
排列問題:奇怪的比賽 - 遞歸枚舉所有可能答題結果
問題描述 10 道題,初始分 10。答對:分數×2;答錯:減去題號分值。最終分恰好 100。求所有可能的答對/答錯序列(1=對,0=錯),每行一個答案。 遞歸
NYOJ 659 判斷三角形:邊長關系判定類型並計數
問題描述 輸入 T 組測試數據,每組三邊長 a,b,c。判斷能否構成三角形: - 不能 → 輸出 NO - 能 → 至少 1 個 YE(普通三角形) 若等腰
UVA 1543 Telescope:圓上點選多邊形最大面積 DP
問題描述 單位圓上給定 n 個點(按逆時針順序,以百分比表示位置),選 k 個點構成凸多邊形,求最大面積。n≤?,k≤?。 DP 狀態定義 將圓環展開為長度
鏈式隊列 C++ 實現:模板類設計與完整操作
數據結構定義 使用模板實現泛型鏈隊列: template struct QNode { T data; QNode* next; }; template st
HDU 1007 / ZOJ 2107 Quoit Design:分治法求最近點對
問題描述 平面上 N(≤100,000)個點,求最近點對距離,輸出半徑(距離/2),保留兩位小數。多測試案例,N=0 結束。 分治算法 O(N log N)
HDU 1051 Wooden Sticks:貪心策略最小化設置時間
問題描述 n 根木棍(長度 l,重量 w)。處理第一根需 1 分鐘設置。若上一根棍子 l≤l 且 w≤w,則無設置時間;否則需 1 分鐘。求最小總設置時間。n≤