Android JNI:Java 與 C++ 相互調用完整指南
一、Java 調用 C++ (JNI) 命名規則 // 返回類型 Java_包名_類名_方法名(JNIEnv*, jobject) // 例:package
Codeforces 216B Forming Teams:並查集處理敵對關係分組
題目 n 人,m 對敵對關係(每人敵人 ≤ 2)。需分成兩隊人數相等,敵對者不在同隊。求最少淘汰人數。 圖論建模 敵對關係構成無向圖,度數 ≤ 2 → 圖由
HDU 4742 Pinball Game 3D:三維偏序最長路徑數 + 計數(CDQ 分治 + BIT)
題目轉述 三維空間 n 個球,球 A 可撞球 B 若 Ax≤Bx, Ay≤By, Az≤Bz。撞擊後 A 消失。求最長撞擊鏈長度及達到該長度的方案數(模 1e9
ZOJ 3497 Mistwald:矩陣快速冪判斷 P 步可達性
題目模型 n×m 矩陣,每格有 4 個傳送門指向相鄰格。起點 (1,1),終點 (n,m)。到達終點即停止(無出邊)。問恰走 P 步(0 ≤ P ≤ 1e8)能
全排列算法:Perm 遞歸實現、字典序問題與去重擴展
Perm 遞歸核心思想 固定前 k 位,對剩餘 n-k 位全排列。交換 a[k] 與 a[i] (i≥k),遞歸處理 k+1,回溯交換回來。 void perm
複雜鏈表深度複製:O(1) 空間三步法完整解析
題目 複製複雜鏈表:每節點除 next 外還有 sibling 指向任意節點或 null。要求時間 O(n)、額外空間 O(1)(不含輸出)。 三步法核心思路
LeetCode Text Justification:文本左右對齊演算法實現
題目 給定單詞陣列 words 與行寬 L,貪心填滿每行(盡可能多單詞),左右對齊:空格均勻分配,左邊多餘空格優先。最後一行靠左對齊,單詞間單空格,末尾補空格。
HDU 1698 線段樹區間賦值求和:懶標記完整實現
題目 長度 n 的鉤子,初始值全 1。m 次操作:將區間 [l, r] 設為 v。最後求全鉤子值之和。n ≤ 100000,多測資。 線段樹 + 懶標記 節
LeetCode Letter Combinations of a Phone Number:遞歸生成所有組合
題目 給定數字字串(2-9),返回所有可能的字母組合。數字到字母映射同電話鍵盤。例如 23 → [ad,ae,af,bd,be,bf,cd,ce,cf]。 遞
HDU 1254 推箱子:BFS + BFS 雙層搜尋最小推動步數
題目模型 地圖 8×8,包含牆(1)、空地(0)、人(4)、箱子(3)、目標(2)。人可上下左右移動,推箱子需人站在箱子反面且目標格為空地。求將箱子推到目標的最
LeetCode Valid Number:字串驗證是否為數字(正則與庫函數兩法)
題目 判斷給定字串是否為合法數字。包含整數、小數、科學記號(e/E)、正負號、前後空白。例如 0、 0.1 、2e10 合法;abc、1 a 不合法。 解法一
LeetCode Minimum Depth of Binary Tree:兩種遞歸解法詳解
題目 給定二元樹,求其最小深度(從根節點到最近葉子節點的節點數)。葉子節點定義為無左右子節點的節點。 解法一:前序遍歷 + 全域最小值 維護當前深度 cur
C++ 簡易計算器實現:四則運算與異常處理
程式功能 從標準輸入讀取 整數 運算元 整數 格式的算式,支援 + - * /,除零檢查,異常捕捉,持續運行直到輸入結束。 代碼分析 #include <
Codeforces 214E Relay Race:三維 DP 解決雙人接力最大得分
題目重述 n × n 網格,每格有分數(可為負)。Furik 從 (1,1) 走到 (n,n),每步只能向下或向右;Rubik 從 (n,n) 走回 (1,1)
NYOJ 915 ±字符串:最小交換次數使兩字串相同
題目大意 給定兩個等長、僅含 + 和 - 的字串 s1、s2。每次操作可交換 s1 中相鄰兩字符。求使 s1 變為 s2 的最小交換次數;若不可能(字符統計不同
POJ 1953 World Cup Noise:DP 計算無相鄰 1 的二進制串數量
題目轉述 給定長度 n (1 ≤ n ≤ 45),求有多少個 n 位二進制字串不包含相鄰的 1。輸出格式為 Scenario #k: 後接答案。 動態規劃分析
POJ 2828 線段樹單點更新:倒序插入求排列
題目大意 有 n 個人,每人有一對 (p_i, v_i)。從空序列開始,依序將第 i 個人插入到當前序列的第 p_i 個空位(1-based),其值為 v_i。