LeetCode Valid Parentheses:括號匹配驗證(棧)
問題描述 給定只包含 `()[]{}` 的字符串,判斷括號是否有效閉合。正確嵌套順序:`()`、`()[]{}` 有效;`(]`、`([)]` 無效。 棧算法
POJ 3252 Round Numbers:組合數學與數位 DP 兩種解法對比
問題重述 區間 [L, R] 中,二進制 0 的個數 ≥ 1 的個數的數字計數。 方法一:組合數學直接計數 對長度為 `n` 的二進制數(最高位 1),剩餘
C++ 模板高級用法:可變參數、仿函數、using、元編程、智能指針
1. 可變參數模板(Variadic Templates) 遞歸展開處理不定數量參數: void showall() {} template void show
LeetCode Merge Two Sorted Lists:合併兩個有序鏈表(哨兵節點法)
問題描述 合併兩個升序單鏈表,返回新鏈表頭。要求拼接原節點,不創建新節點。 哨兵節點技巧 next`。 代碼實現 val next = l1 ? l1 :
POJ 3252 Round Numbers:數位 DP 入門詳解(二進制中 0≥1 計數)
問題描述 給定區間 [L, R],求其中滿足「二進制表示中 0 的個數 ≥ 1 的個數」的整數個數。二進制無前導零。L,R ≤ 1018。 數位 DP 思路
POJ 3126 Prime Path:四位素數變換最短路徑(BFS)
問題描述 給定兩個四位素數 `a`、`b`,每步可修改一位數字,且修改後必須仍為四位素數(首位非 0)。求從 `a` 到 `b` 的最少步數,不可達輸出 Imp
USACO 2.2 Subset Sums:集合劃分 DP 解法詳解
問題描述 將 {1,2,…,N} 劃分為兩個子集,使兩子集元素和相等。求劃分方案數(交換兩子集視為同一方案)。N ≤ 39。 關鍵觀察 總和 `S = N(N
素數篩選優化:從暴力試除到位運算優化的埃氏篩(百萬級秒出)
問題背景 驗證 108 以內數字是否為素數,暴力試除 O(√n) 過慢,普通埃氏篩 2.1 秒、98 MB,需優化時間與空間。 優化策略 去除偶數:只存儲奇
化繁為簡:自製 Windows 快速關機小工具(含原始碼)
自製快速關機工具:解決筆電關機卡住問題 公司公用筆電關機總是卡在「關閉系統中...」無法完成,忍無可忍下決定自己寫一個快速關機程式,直接呼叫系統 API 強制關
數據結構基礎:順序表與鏈表的 C++ 模板實現
1. 順序存儲結構 使用動態數組,支持插入、刪除、查找、按位訪問。關鍵代碼: last = -1; } ~List() { delete data; }
DIY 一款 C/C++ IDE:從記事本編程到 MFC 圖形界面實現
原理:命令行調用編譯器 源文件(如 `1.c`)可通過命令行直接調用編譯器生成可執行文件: MinGW (Code::Blocks 自帶):`mingwvar
C++ 動態鏈接庫(DLL)封裝與跨語言調用全流程
1. 創建 DLL 項目 Visual Studio → Win32 Project → DLL,勾選「空項目」。 2. 導出接口設計 頭文件 SSLLib.
C++ 不使用 virtual 實現多態:成員函數指針技巧
核心思想 利用成員函數指針 `int (Base::*p)()` 模擬虛函數表機制。基類持有一個函數指針 `virtual_p`,構造函數中初始化指向自身實現;
Ubuntu 下使用 Vim 進行 C++ 開發環境配置指南
前言 在 Ubuntu 14.04 LTS 上構建輕量級 C++ 開發環境,選用 Vim 7.4 配合豐富插件,編譯鏈接用 g++。本文記錄完整配置過程,供個人
LeetCode Reverse Words in a String:單詞翻轉(棧實現)
問題描述 給定一個英文句子,將單詞順序翻轉。例如 the sky is blue → blue is sky the。單詞間由空格分隔,可能包含多餘空格,輸出單