HDU 1813 Escape from Tetris:BFS 狀態壓縮求通用逃脫指令序列
問題描述 N×N 棋盤(N<9),部分格子壞(不可走)。Lele 被隨機放在任意好格子。求一個最短指令序列(上下左右),使無論起始位置,按序執行(撞壁/壞格忽略
HDU 2196 Computer - 樹形 DP 求每節點到最遠節點距離
題目大意 給定一棵 N (≤10000) 節點的樹,邊有權長。節點 1 為根。對每個節點 i,求其到樹中最遠節點的距離 S_i(即以 i 為根的樹的高度,邊權和
HDU 1560 DNA Sequence - 最短公共超序列 IDA* 求解
題目大意 給定 k (≤8) 條 DNA 序列 (長度 1~5,字符集 {A,C,G,T}),求最短序列長度,使其包含所有給定序列為子序列。等價於求最短公共超序
HDU 4127 Flood - Flood-it 遊戲 IDA* 求最少步數
題目大意 同 HDU Flood-it!,N×N (N≤8) 棋盤,6 種顏色,從左上角連通區擴展,求全板同色最少步數。多測試用例,N=0 結束。 IDA*
HDU 3567 Eight II - 八數碼變體:任意起止狀態雙向 BFS 預處理
題目大意 同八數碼,但給定任意起始狀態 A 和目標狀態 B,求最短操作序列(字典序最小)。T ≤ 200,保證可解。需輸出步數與操作串。 核心觀察:預處理所有
LeetCode 筆記:Minimum Path Sum - 矩陣最小路徑和
題目描述 給定 m×n 非負整數矩陣,從左上角走到右下角,每步只能向右或向下,求路徑上數字和的最小值。 動態規劃:標準二維 DP dp[i][j]:走到 (i
LeetCode Single Number III - 找出兩個只出現一次的數字
題目大意 數組中恰有兩個元素出現一次,其餘均出現兩次。找出這兩個元素。O(n) 時間、O(1) 空間。 核心思路:分組異或 先將所有元素異或,得到 xo
HDU 4012 Paint on a Wall - 2×N 棋盤最少矩形染色步數 BFS 狀態壓縮
題目大意 2×N (N≤8) 棋盤,每格大寫字母表示顏色。刷子可一次染一個矩形區域為單一顏色(覆蓋舊色)。求從空白棋盤達到目標圖案的最少步數。 狀態壓縮 BF
LeetCode Single Number II - 其餘元素出現三次,找唯一元素
題目大意 數組中除一個元素出現一次外,其餘均出現三次。找出單一元素。O(n) 時間、O(1) 空間。 方法一:逐位統計取模 (通用、易懂) 32 位整數每一位
LeetCode Single Number - 找出唯一出現一次的數字
題目大意 給定整數數組,除一個元素出現一次外,其餘均出現兩次。找出那個單一元素。要求 O(n) 時間、O(1) 空間。 異或運算性質 x ^ x = 0
HDU 2234 無題 I - 4×4 矩陣行列循環移動 IDA* 求最少步數
題目大意 4×4 矩陣,每行/列可循環左/右/上/下移動一格。目標:使某一行全相同或某一列全相同。只需判斷最少步數是否 ≤5,是則輸出步數,否則 -1。T 組測
HDU 1043 Eight - 八數碼問題 A* 求解
題目大意 經典 8-puzzle (3×3 九宮格),數字 1~8 和一個空格 x。合法移動:空格與上下左右相鄰數字交換。給定初始狀態,求達到目標狀態 1234
C++ 現成 Hash 函數詳解:__gnu_cxx、std::tr1 (FNV) 與 C++11 std::hash
三大 Hash 實現來源 命名空間/標準頭文件算法適用場景 __gnu_cxx (GNU 擴展)<ext/hash_fun.h> 或 &l
LeetCode 筆記:Edit Distance - 編輯距離 (Levenshtein Distance)
題目描述 給定兩個單詞 word1、word2,允許三種操作(各代價 1):插入、刪除、替換。求將 word1 轉換為 word2 的最小操作次數。 動態規劃
LeetCode Remove Invalid Parentheses - 移除最少括號使字符串有效
題目大意 給定包含括號和字母的字符串,移除最少數量的括號使其有效,返回所有可能的結果(去重)。例:()())() → [()()(), (())()],(a)(
LeetCode Search a 2D Matrix II - 二維矩陣搜索 II
題目大意 給定一個 m×n 矩陣,每行從左遞增,每列從上遞增。判斷目標值 target 是否存在。例: [1, 4, 7, 11, 15] [2, 5,
C++11 新特性:移動語義詳解與實戰應用
背景:拷貝的代價 按值傳遞觸發拷貝構造函數,對於管理動態內存的類(如 vector, string, 自定義資源類),深拷貝涉及內存分配、數據複製,開銷大。C+
棧與隊列常見面試題:最小值棧、出棧序列合法性 C++ 實現
題目一:實現 O(1) GetMin 的棧 同 文章 3095,此處給出另一種寫法(類內直接用 STL stack)。 #include #include