ZOJ 1524 Supermarket:動態規劃解決購物清單最小花費
問題描述 購物清單有 m 種物品(按順序)。超市有 n 個貨架項目,每項有商品 ID 和價格。需按清單順序在超市中選購對應商品(可跳過超市項目),求最小總花費。
UVa 10755 Garbage Heap:三維最大子陣列和轉化為一維區間最值
問題描述 給定 A×B×C 三維陣列(A,B,C ≤ 20),求任意子長方體的元素和最大值。子長方體由任意對角頂點確定。 核心思路:維度遞減 + 一維最大子段
POJ 2892 Tunnel Warfare:線段樹維護區間連續 0 的兩種經典解法深度對比
前言:動態區間連續性查詢的教科書級問題 POJ 2892 要求支援三種操作:D x(破壞位置 x,置 1)、Q x(查詢包含 x 的最大連續 0 區間長度)、R
C/C++ static 關鍵字深度解析:靜態變量的生存期、作用域與鏈接屬性全景圖
前言:一個關鍵字,三種語境,截然不同的語義 static 是 C/C++ 中最容易被誤解的關鍵字之一。它根據出現位置不同,分別控制生存期、作用域、鏈接屬性三個正
方陣順時針旋轉 90°:轉置+行逆序的原地演算法圖解與 C 實現
前言:旋轉 ≠ 轉置,一步之差導致邏輯錯誤 矩陣順時針旋轉 90° 是面試高頻考點。許多候選人誤以為「轉置」即旋轉,實則轉置是對主對角線鏡像,旋轉是轉置後再對水
HDU 1302 The Snail:蝸牛爬井模擬題詳解
問題描述 蝸牛在深度 H 的井底。白天爬升 U,夜晚滑落 D。每天疲勞度 F%,即第 i 天爬升距離為 U * (1 - (i-1)*F/100)(不足 0 算
HDU 1165 Eddy's Research II:阿克曼函數規律推導與 O(1) 解法
前言:從遞歸爆炸到數學閉式解 阿克曼函數以極快增長速度著稱,直接遞歸計算在 m=3 時即面臨棧溢出與天文數字。HDU 1165 限制 m≤3,n 在 m<3 時
《編程之美》復賽 A 題小數據解法:01 串編號生成與離散化優化
前言:經典競賽題目的工程化思考 《編程之美》復賽 A 題要求在公路兩端固定建築「0」與「1」的前提下,依座標順序插入新建築,每棟建築編號為滿足字典序約束的最短
車務管理系統:基數排序與靜態鏈表的高效車牌查詢實戰
前言:車輛管理中的排序與檢索挑戰 車務系統需處理海量車牌記錄,支援按車牌號快速排序、精確查詢與遍歷顯示。本文解析一套基於靜態鏈表與LSD 基數排序的 C++ 實
廣義表共享結構實現:從字串解析到循環引用的完整 C++ 方案
前言:廣義表與共享結構的工程挑戰 廣義表是線性表的推廣,允許元素為原子或子表,天然支援多層巢狀結構。當子表在多處被引用時,引入共享結構可大幅節省記憶體,但也帶來
全文檢索核心算法實現:雙鏈樹(DLT)與關鍵字統計完整解析
前言:從理論到工程的全文檢索實戰 全文檢索是搜尋引擎、文獻管理系統的核心技術。本文基於經典的「雙鏈樹」資料結構,完整呈現從關鍵字建樹、文本掃描、頻率統計到結果輸
C++ 核心概念深度解析:Overload、Override 與 Hide 的關鍵差異
前言:為什麼必須搞懂這三個概念? 在 C++ 開發中,「重載」、「覆寫」與「隱藏」是三個極易混淆卻又至關重要的術語。它們雖然都涉及同名函數,但背後的編譯機制、運
回溯法解決 0-1 背包問題:分支限界優化完整 C++ 實現
問題定義 給定 n 個物品,第 i 個物品價值 `v[i]`、重量 `w[i]`,背包容量 `c`。每個物品**只能選或不選**(0-1),求裝入背包的最大總價
C++ 運行時類型識別(RTTI)深度解析:dynamic_cast 與 typeid 實戰指南
RTTI 簡介 運行時類型識別(Run-Time Type Identification)允許程序在運行階段確定對象的真實類型。C++ 提供兩大核心機制: `
C++ 復數類運算符重載進階:友元函數版實現雙向隱式轉換
為什麼需要友元函數? 成員函數重載 `operator+` 要求**左操作數必須是類對象**。若想支持 `3.0 + c1`(左操作數為基本類型),或希望運算符
C++ 復數類運算符重載實戰:成員函數版四則運算完整實現
需求背景 實現復數類 `Complex`,支持加減乘除四則運算,並提供顯示功能。通過**運算符重載**使代碼具備數學直觀性:`c3 = c1 + c2` 而非
最大子數組問題的線性掃描優化:Kadane 算法 O(n) 完整實現
從分治到線性掃描 上文介紹了分治法 O(n log n) 解決最大子數組。觀察分治中的「跨越中點」掃描,其實只需一次從左到右的遍歷即可維護全局最優——這就是 *
算法導論經典:分治法求最大子數組問題完整講解與 C++ 實現
問題定義 給定整數數組 A[low..high],找到**連續子數組**使其元素和最大。輸出該子數組的左邊界、右邊界及最大和。例如 `1, -10, 2, 4,