POJ 2676 Sudoku 數獨求解器:DFS 回溯 + 位元優化完整實作
題目大意 標準 9×9 數獨,輸入多組測資,0 代表空格。輸出任一合法解。限制:每行、每列、每 3×3 宮內數字 1~9 不重複。 核心演算法:DFS 回溯
C++ STL 深度解析:map/multimap 查找函數效能與原理
為何選擇 map? 鍵值非數值型或稀疏分佈時,map (紅黑樹) 提供 O(log n) 查找/插入/刪除。 鍵值自動有序,支援範圍查詢與有序遍歷。 需一鍵多
C/C++ 除錯技巧:標準輸入重導向與字串串流模擬輸入
痛點 競程或專案開發時,頻繁手動輸入測試資料極其低效。將輸入重導向至檔案、字串緩衝區,或使用格式化字串函數,可大幅提升除錯效率。 方案一:檔案輸入重導向 C+
C++/MFC 判斷有效檔案路徑完整實作 (IsValidFileName)
功能說明 驗證給定的字串是否為合法的 Windows 檔案完整路徑。支援自訂副檔名檢查(傳入 * 表示不限制副檔名)。 驗證規則 0。 目錄部分必須存在(
POJ 3693 Maximum Repetition Substring:後綴陣列 + RMQ 完整解析
問題描述 給定一個僅含小寫字母的字串(長度 ≤ 100,000),找出其子字串中「重複次數」最大者。重複次數定義:字串可被分割為 R 個相同的連續子字串,最大的
HDU 3658 矩陣快速冪解題詳解:字母序列排列計數
題目大意 給定序列長度 n,序列由大小寫字母(A-Z, a-z,共 52 個字元)組成。相鄰字母的 ASCII 碼差值必須 ≤ 32,且序列中至少要有一組相鄰字
Winsock UDP 網路程式設計完整指南(C++ 實作)
在 Windows 平台上進行網路程式開發時,Winsock(Windows Sockets)是核心 API。相較於面向連線的 TCP 協定,UDP(User
C++ 對象模型:編譯器如何處理函數返回對象(NRV 優化)
現象 函數返回類對象時,理論上會調用拷貝構造函數創建臨時對象再拷貝給調用者。但實測只調用一次構造函數,無拷貝構造輸出。 編譯器處理步驟 傳統轉換:為函數添加
LeetCode Word Break:動態規劃判斷字符串拆分
題目 給字符串 s 和詞典 wordDict,判斷 s 是否可拆分為詞典單詞序列。例:s=leetcode, dict=[leet,code] → true。
LightOJ 1356 Prime Independence:二分圖最大獨立集
題目 集合中無兩數使一個是另一個的「質數倍」(即 a = b * prime)。求最大質數獨立子集大小。n ≤ 40000, 數值 ≤ 500000。 建模為
LeetCode Linked List Cycle:快慢指針檢測環
題目 判斷單鏈表是否有環。進階:O(1) 空間。 方法一:HashSet 記錄訪問節點 遍歷鏈表,用 unordered_set 存地址。遇到重複地址 → 有
ACdream 1139 Sum:公式推導 + 模逆元求矩陣路徑和
題目 n×n 數字矩陣 (0-9)。每行相鄰數字組成的數(如 123 產生 1,2,3,12,23,123),每列同理。求所有這些數的和模 1e9+7。n ≤
LeetCode 7 Reverse Integer:溢出檢查的整數反轉
題目 反轉 32 位有符號整數。溢出返回 0。例:123→321, -123→-321, 120→21。 關鍵:溢出檢查 INT_MAX = 2,147,48
ZOJ 3870:異或運算統計滿足條件的數對
題目 給 n 個數,求有多少無序數對 (i,j) 使 max(a_i, a_j)。 性質分析 設 a < b。 b ⇔ a 的最高位 1 在 b 中對應位為
HDU 3658:矩陣快速冪計算字符串填充方案數
題目 長度 m 字符串填充字母 A-Z,a-z (52 個)。相鄰字符 ASCII 差 ≤ 32,且至少存在一對差 = 32。求方案數模 1,000,000,0
UVA 12470:Tribonacci 數列矩陣快速冪
題目 遞推 f(n) = f(n-1) + f(n-2) + f(n-3),f(1)=0, f(2)=1, f(3)=2。求 f(n) 模 1,000,000,
HDU 1576 A/B:模逆元求分數取模
題目 計算 (A/B) mod 9973,其中 B 與 9973 互質(9973 為質數)。多測試用例。 數學 模質數 p 下,B^{-1} ≡ B^{p-2