原创 編程之美--計算字符串的相似度

許多程序會大量使用字符串。對於不同的字符串,我們希望能夠有辦法判斷其相似程度。我們定義了一套操作方法來把兩個不相同的字符串變得相同,具體的操作方法爲: 1.修改一個字符(如把“a”替換爲“b”)。 2.增加一個字符(如把“abdd”變爲“

原创 棧實現括號匹配

算法:檢測表達式中的字符,若是左括號就入棧,如果是右括號就出棧一個元素與其配對,配對成功則繼續訪問下一個字符,否則退出。出現非括號字符則跳過。 [cpp] view plaincopyprint? #include <s

原创 編程之美--快速尋找滿足條件的兩個數

1、題目:快速找出一個數組中的兩個數字,讓這兩個數字之和等於一個給定的值。 解法一: 窮舉,從數組中任意取出兩個數字,計算兩者之和是否爲給定的數字。時間複雜度爲N(N-1)/2即O(N*N)。 解法二: 假設給定的和是sum,一個變通的思

原创 算法知識點整理

1、算法的幾個基本特徵是什麼? 確定性,算法中每一步驟都必須有明確定義,不允許有多義性; 有窮性,算法必須能在有限的時間內做完,即能在執行有限個步驟後終止; 可行性,算法原則上能夠精確地執行; 2、算法複雜性的定義? 最常見的是時間(要通

原创 MFC知識點整理

1、MFC包含哪幾類程序? 單文檔SDI,多文檔MDI,對話框dialog。 2、mfc的主要類是什麼? CAboutDlg      關於類用於版權聲明 CMainFrame   框架類   (文檔和視圖的框架) CTestApp  

原创 最小堆與最大堆

最大堆和最小堆是二叉堆的兩種形式。 最大堆:根結點的鍵值是所有堆結點鍵值中最大者,且每個結點的值都比其孩子的值大。 最小堆:根結點的鍵值是所有堆結點鍵值中最小者,且每個結點的值都比其孩子的值小。 最小堆和最大堆的增刪改

原创 編程之美--雙線程高效下載

一,題目         網絡上下載數據,然後存儲到硬盤上。簡單做法是:先下載一塊然後寫到硬盤,然後再下載,再寫到硬盤上。         缺點:需要先下載完才能寫入硬盤,下載和寫是串行操作。         改進:讓兩個線程並行

原创 編程之美--尋找發帖水王

1、題目:找出數組中出現次數超過數組大小一半的數字。 直觀解法是,對所有數字進行排序,掃描一遍已排序好的數組,統計各個數字出現的次數。如果某個數字出現的次數超過總數的一半,就輸出這個數。次法時間複雜度爲O(N*log2N+N)。 解法:

原创 代碼大全(8)之軟件質量

隨項目增大而工作量增大的活動: 計劃 管理 交流 需求開發 系統功能設計 接口設計和描述 總體結構 綜合 錯誤消除 系統測試 文檔生成 配置管理 一般: 你的軟件配置管理計劃是否用於幫助程序員,並能將額外開銷減至最少 你使用SCM手段能

原创 《軟件調試》筆記

一、插裝——開發人員編寫的額外代碼,來提高程序的可觀察性和可控制性。 二、發現bug的機會: (1)可調試的源代碼(2)插裝(3)宏定義(4)編譯器標誌(5)靜態檢查器 (6)選擇的庫(7)鏈接器選項(8)代碼插裝工具(9)測試用例/輸

原创 軟件架構系列感想(二)

3、軟件架構師是什麼?應用程序架構的關注點是應用程序,通常包括將應用程序解構爲類和組件,確保設計模式的正確應用,構建和使用框架等等。本質上,應用程序架構談論的是軟件設計的低級別切面,通常只考慮單一的技術棧。結構單元主要以軟件爲基礎,包括編

原创 代碼大全(3)之子程序

子程序在結構設計中應該被指出: 子程序將要包含的信息 子程序的輸入 子程序的輸出,包括受到影響的全局變量 子程序將如何處理錯誤創建子程序: 是否檢查過先決條件已經滿足了嗎 定義子程序將要解決的問題了嗎 結構設計是否足夠清楚 如何測試子程序

原创 代碼大全(1)之軟件創建

軟件創建: 問題定義 需求分析 實現計劃 總體設計 詳細設計 創建及實現 系統集成 單元測試 系統測試 校正性的維護 功能強化 “編程”隱含着把已經設計好的程序機械的翻譯成機器語言的過程,“創建”指的是創造性和決策性活動,包含一些特定的任

原创 《軟件工程》之開發訪談

《立項階段》 1、立項建議——產品構思提交給總工程師,撰寫立項建議書。 2、可行性分析——制定調研計劃,生成立項可行性分析報告。 3、立項評審——形成立項評審記錄表。 4、項目籌備——任命項目經理、同時定義QA、CCB等角色。 《計劃階