最小生成樹 Prim 演算法 C++ 實作 - 鄰接表版本
Prim 演算法核心邏輯 從任意頂點開始,維護「已在樹中」頂點集合,每次選擇連接樹內外的最小權邊加入,直到所有頂點入樹。 鄰接表存儲結構 struct Ed
差分約束系統 C++ 實作 - Bellman-Ford 求解線性不等式組
什麼是差分約束系統? 一組形如 xj - xi ≤ bk 的線性不等式,其中每行僅含一個 1、一個 -1,其餘為 0。求滿足所有約束的變量值。 圖論建模 每
單源最短路徑 Dijkstra 演算法 C++ 完整實作 - 優先隊列優化版
演算法適用條件 圖中無負權邊 單源最短路徑 有向/無向圖均可 時間複雜度: O((V+E) log V) — 使用二叉堆優先隊列 核心思想:貪心 + 優先
單源最短路徑 Bellman-Ford 演算法 C++ 完整實作
演算法適用場景 圖中存在負權邊 需要檢測負權環 單源最短路徑,圖可為有向/無向 時間複雜度: O(VE) — V 為頂點數,E 為邊數 核心原理 初始化
C/C++ 指針與數組深度解析(二) - 等價場景、下標本質與函數參數退化
C 標準規定的三大等價規則 規則 1:表達式中數組名退化為指針 表達式中的數組名被編譯器視為指向首元素的指針,除外三種情況: sizeof(arr) —
C/C++ 指針與數組深度解析(一) - 定義、訪問機制與跨文件陷阱
核心概念區別 特性指針數組 本質存儲地址的變量連續內存塊,直接存儲數據 內存分配動態/靜態分配指針變量編譯期根據類型和長度分配連續空間 訪問方式間接訪問:讀取
C++ 類成員初始化 - 初始化列表 vs 構造函數體賦值深度對比
兩種初始化方式 方式一:構造函數體內賦值 class MyClass { int x, y; public: MyClass() {
C++ 虛函數表機制深度解析 - 內存佈局與動態分發原理
虛函數表(vtable)核心概念 虛函數表 是編譯器為每個包含虛函數的類生成的靜態數組,存儲該類虛函數的地址。每個包含虛函數的類的對象實例,在內存佈局最前端包含
C/C++ typedef 與 #define 深度對比 - 類型別名 vs 宏替換本質差異
核心區別一覽 維度typedef#define 本質編譯器類型系統一部分預處理器文本替換 處理階段編譯期預處理期 語義理解編譯器理解類型含義無語義,純字符串替
批處理自動為 Protobuf 生成文件添加預編譯頭 - 實戰技巧
問題背景 使用 Protocol Buffers 的 protoc 編譯器生成 C++ 代碼(*.pb.cc、*.pb.h)時,若專案啟用預編譯頭(如 MSVC
C++ 友元函數與友元類詳解 - 破壞封裝的雙刃劍
什麼是友元? 友元 是 C++ 為了在特定場景下打破封裝限制而提供的機制。被聲明為友元的函數或類,可以訪問目標類的 private 和 protected 成員
C/C++ 引用與指針深度對比 - 異同點全面解析
核心概念區別 特性指針引用 本質獨立實體,存儲地址值變量別名,無獨立存儲 初始化可延遲,可為 nullptr定義時必須初始化,不可為空 重新綁定可隨時指向新對
C++ const 關鍵字深度解析 - 參數、返回值、成員函數完整指南
const 核心哲學 const 源自 constant(恆定不變),是 C++ 提供的強類型約束機制。它不僅用於定義常量,更能修飾函數參數、返回值、成員函數,
世界完全對稱日計算 - C++ 日期回文判斷演算法
什麼是完全對稱日? 完全對稱日是指日期的 MMDD 格式字符串反轉後對應的年份,與該日期實際所在年份相同。例如 2011 年 11 月 2 日: 月日格式:1
ACM John 的農場 - 最小生成樹 Prim 演算法 C++ 實作
問題場景 John 需要在 n 個牧場(3 ≤ n ≤ 20)之間鋪設石子路,使任意兩牧場連通且總費用最低。這是經典的最小生成樹問題。 輸入輸出格式 輸入:
ACM 節約每一個字節 - 最大公共後綴長度求和 C++ 解法
問題背景 John 面臨嚴格的儲存空間限制,需要壓縮大量字符串。他發現若多個字符串擁有相同的後綴,便可將共同後綴合併儲存以節省空間。例如 Programming
ACM 非前綴編碼判斷 - C++ 實作解析
什麼是非前綴編碼? 在資訊理論與編碼技術中,非前綴編碼 是一類特殊的二進制編碼方式。其核心定義為:在一組字符的編碼集合中,不存在任何一個字符的編碼是另一個字符編