C++ 迭代器版快速排序:基於 vector 實現
使用 vector 迭代器的通用快排模板 以 vector::iterator 為介面,支援子區間排序,採用 XOR 交換避免臨時變量。 完整代碼 [cpp]
兩無序不重複數組求交集:三種算法時間複雜度對比
問題描述 輸入:a[]={5,7,8,9,1,2,3}, b[]={2,8,10,4,6,7} 輸出:{2,7,8}(順序不限) 思路一:暴力雙循環 O(n²
設計模式精講:模板方法模式 - 定義算法骨架,延遲細節到子類
模式定義 模板方法模式 在一個方法中定義一個算法的骨架,而將某些步驟延遲到子類中實現。模板方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。
HDU 1298 T9 預測輸入法:字典樹 + DFS 實現智能聯想
問題背景 經典 T9 輸入法模擬:9 個數字鍵對應 26 個字母,用戶按鍵序列(如 43556),系統根據詞頻從字典中找出概率最大的前綴詞。每次按鍵後需即時輸出
C/C++ 結構體深度解析:從 C 風格到 C++ 成員函數與構造函數
核心差異 特性C structC++ struct 成員類型僅數據成員數據 + 函數成員 訪問控制默認 public默認 public(class 默認
多邊形面積計算:鞋帶公式與三角形分解兩大經典算法
問題描述 給定 N 個頂點按序連接形成簡單多邊形(可能凹凸),計算其面積。頂點按順/逆時針給出,結果取絕對值。 方法一:線性積分 / 梯形公式(鞋帶公式本質)
ZOJ 3659 Conquer a New Region:樹上路徑權值和最大化 - 貪心並查集
問題重述 給定一棵邊帶權的樹,定義兩點間路徑權值為路徑上最小邊權。選一個點作為根,使其到其餘所有點的路徑權值之和最大。輸出該最大和。 貪心策略:降序加邊 +
POJ 3625 解題報告:已建道路的最小生成樹補全
問題描述 N 個牧場(N ≤ 1000)坐標已知,M 條道路已建成(長度視為 0)。求補全最小生成樹所需的最小新建道路總長度。 核心洞察 將已建道路的邊權設為
POJ 1159 Palindrome:最少插入次數構造回文串
問題轉化 給定長度 N (≤5000) 的字符串,求最少插入多少字符可使其成為回文。等價於:N - 最長回文子序列長度 (LCS of s and revers
POJ 1163 The Triangle:三角形最大路徑和動態規劃
問題描述 給定 N 行數字三角形(N ≤ 250),從頂點出發,每步只能走向下一行相鄰的兩個數字之一,求從頂到底的最大路徑和。 動態規劃解法 自頂向下或自底向
POJ 1028 Web Navigation:瀏覽器歷史記錄模擬
問題建模 模擬瀏覽器的前進/後退/訪問/退出操作。使用兩個棧維護歷史狀態: past 棧:當前頁面及之前訪問過的頁面(棧頂為當前頁) future 棧:後退後
POJ 1004 Financial Management:月均帳單計算
題目大意 輸入12個月的帳戶餘額,計算並輸出平均餘額,保留兩位小數,前綴美元符號 $。 核心代碼(C++) [cpp] #include #include
POJ 1046 Color Me Less:顏色量化與最近鄰搜索
問題描述 給定 16 個標準顏色(RGB 值),對於每個輸入的目標顏色,在標準集合中找到歐幾里得距離最近的顏色並輸出映射關係。輸入以 -1 結束。 解題思路
POJ 2349 解題報告:極地通訊網絡 - 最小生成樹與衛星通道優化
問題背景 在參加比賽前為了熟悉模板,特意練習了這道經典的最小生成樹變體問題。題目要求在給定 P 個哨所座標的情況下,利用兩種通訊方式建立網絡:普通無線電通訊(距
全排列算法大全:遞歸、STL與字典樹三種實現詳解
輸入 abc,輸出所有排列組合 全排列是經典算法問題:給定字串,列出所有字符的排列組合。本文詳細對比三種主流實現思路。 思路一:遞歸交換法(經典回溯) 核心思
Android GPS模擬器中的靜態指針設計模式解析
從原始碼看靜態結構體指針的單例式用法 在Android GPS模擬器(qemu_gpsd)的代碼中,發現一個有趣的靜態指針宣告模式,值得記錄探討。 結構體定義
時針與秒針重合之謎:24小時內究竟相遇幾次?
看似棘手,一點即通的鐘面數學題 經典面試題:24小時內,時針與秒針重合幾次? 乍看之下,秒針飛速轉動,時針緩慢推進,兩者似乎會頻繁「擦肩而過」。但若抓住核心關鍵
給編程新手的三把鑰匙:投入、堅持、自信
開篇:見證兩極分化 課程進行三周,上機作業提交情況呈現「冰火兩重天」:部分同學高歌猛進,代碼行數穩步增長;近半同學進度為零或極低。這不是智商差距,而是學習方式的