C/C++ 宏擴展與參數掃描機制深度解析
宏擴展的基本流程 C/C++ 預處理器對宏的擴展遵循嚴格的規則,主要分為以下階段: 參數預掃描:在宏調用前,先對實參進行完整的宏擴展(除非實參被 # 或 ##
POJ 1564 / ZOJ 1711 / HDU 1548 Sum It Up:DFS 與剪枝解題詳解
問題描述 給定一個目標總和 t 和一個包含 n 個整數的列表(已按非遞增序排列),要求找出所有由列表中數字組成、且總和等於 t 的不同組合。列表中的數字可重複使
Linux 字符設備驅動框架:file_operations 與 register_chrdev
驅動框架核心結構 字符設備驅動需實現: 文件操作集 struct file_operations:包含 open, read, write, release,
CF 224B Array:滑動窗口雙指針找子段
問題描述 給定長度 n 的數組,找一個子段 [l, r] 滿足: 1. 子段中不同數字個數恰好為 k。 2. 在所有滿足條件的子段中,元素和最小。 輸出 l,
SRM 223 Div2 Level Two BlackAndRed:O(N) 切牌遊戲
問題描述 一副牌有等量紅/黑牌(R/B 字符串)。切牌後從頂部開始翻,黑牌 +1,紅牌 -1。若過程中累計和曾 < 0 則輸。求切多少張牌(移到底部)能贏,若多
Linux 命名管道(FIFO)生產者進程實現
概念 生產者負責創建 FIFO(若不存在)並寫入數據。 關鍵 API access(path, F_OK):檢查文件是否存在。 mkfifo(path, 0
Linux 命名管道(FIFO)消費者進程實現
概念 命名管道(FIFO)是一種半雙工通信機制,有路徑名,無關進程間可通信。消費者負責讀取數據。 關鍵 API mkfifo(path, mode):創建
2013 編程之美挑戰賽:相似字符串——子串最小漢明距離
問題描述 給定字符串 S1(長 N)、S2(長 M ≤ N),在 S1 中找長度為 M 的子串,使其與 S2 的漢明距離(對應位不同字符數)最小。輸出最小距離。
HDU 1760:搜索博弈——2×2 方塊放置遊戲
問題描述 N×M 棋盤(N×M < 50),部分格子禁用(1),其余可用(0)。雙方輪流放 2×2 正方形方塊,不可覆蓋禁用格或已放方塊。無法放者負。Lele
C++ TinyXML 使用指南:XML 解析與生成
簡介 TinyXML 是輕量級 C++ XML 解析庫,適合嵌入式、跨平台項目。核心類: TiXmlDocument:整個文檔 TiXmlElement:元素
HDU 1339:分解 n = o × 2^p
問題描述 給定正整數 n(≤ 10⁶),分解為 n = o × 2^p,其中 o 為奇數,p ≥ 0。輸出 o 和 p。 解法 反覆除以 2 直到不可除: p
CF 8D Two Friends:三分法優化分離點
問題描述 三點 P0, P1, P2。Alice 從 P0 必須先到 P2 再到 P1,Bob 從 P0 直接到 P1。兩人初始同路,分離後各自走。要求 Ali
POJ 3278 Catch That Cow:BFS 最短路徑
問題描述 農夫約翰在位置 N(0≤N≤100,000),牛在 K。約翰每分鐘可:走到 X-1、X+1,或傳送到 2×X。牛不動。求最少分鐘數到達牛位置。 BF
HDU 1391 Number Steps:坐標與數字映射規律
問題描述 從 (0,0) 開始在平面上按圖示寫入非負整數。規律: (0,0) → 0 (1,1) → 1, (2,0) → 2, (3,1) → 3, (4,
編程之美:數組循環右移 K 位三種算法對比 (O(N) 時間 O(1) 空間)
問題 將長度 N 的數組循環右移 K 位。要求時間 O(N),額外空間僅 2 個變量。例:abcd1234 右移 4 位 → 1234abcd。 方法一:暴力
iOS CoreText 獲取單字符寬度:CTFontGetAdvancesForGlyphs 實戰
場景 需要精確渲染或佈局單字符 (如等寬字體檢測、字符級動畫),UIFont 沒有直接提供單字符寬度,需用 CoreText 底層 API 計算。 核心步驟
O(log N) 快速冪算法:遞歸與迭代實現詳解
問題 計算 baseexponent (exponent 為非負整數),要求時間複雜度 O(log N)。 核心原理:二進制分解 指數按二進制拆分:x13 =
每日構建與持續集成:核心差異、最佳實踐與工程落地
核心定義對比 維度持續集成 (CI)每日構建 (Daily Build) 觸發方式每次代碼提交 (Commit)定時 (通常夜間) 核心目標快速反饋 (分鐘級