原创 解答《編程之美》1.18問題1:給所有未標識方塊標註有地雷概率

  對於《編程之美》上沒有提供答案和提示的1.18和4.11兩節,本文將綜合網絡上已有的部分資料,深入挖掘解題思路,並對目前尚未找到滿意答案的1.18節問題2給出算法解答。閱讀本文需要了解古典概型(百度 /維基)和組合數(百度 / 維基)

原创 [珠璣之櫝]淺談代碼正確性:循環不變式、斷言、debug

  這個主題和代碼的實際寫作有關,而且內容和用法相互交織,以下只是對於其內容的一個劃分。《編程珠璣》上只用了兩個章節20頁左右的篇幅介紹,如果希望能獲得更多的實例和技巧,我比較推崇《程序設計實踐》 (Practise of Program

原创 《編程之美》4.5磁帶文件存放優化:最優解是怎樣煉成的

問題描述:   要定義磁帶上第n個文件,須要依次經過前面n-1個文件。假設磁帶上有n個文件,長度分別爲L[0],L[1], ..., L[n-1]且被訪問的概率分別爲P[0],P[1],...,P[n-1],請問怎樣安排它們在磁帶上的存儲

原创 [珠璣之櫝]字符串和序列:左移、哈希、最長重複子序列的後綴數組解法、最大連續子序列

  字符串和數組在存儲上是類似的,把它們歸爲同一主題之下。本文主要介紹三大類問題和它們衍生的問題,以及相應算法。   本文主要介紹和討論的問題和介紹的算法(點擊跳轉): 字符串循環移位(左旋轉)問題 算法1:“雜技”代碼算法2:塊交換算法

原创 [珠璣之櫝]二分思想與分治法、排序思想

   二分查找是《編程珠璣》作者很喜愛的一個話題,之前我曾經專門寫了一篇博文:如何寫出正確的二分查找?——利用循環不變式理解二分查找及其變體的正確性以及構造方式,在這裏將換幾個角度,繼續探討二分查找的相關內容,以及與它聯繫緊密的分治法和排

原创 《編程之美》3.6判斷鏈表是否相交之擴展:鏈表找環方法證明

  先看看原題:《編程之美》3.6編程判斷兩個鏈表是否相交,原題假設兩個鏈表不帶環。 注:位於(*)符號之間的文字出自於:http://blog.csdn.net/v_july_v/article/details/6447013,作者v_

原创 《算法設計手冊》面試題解答 第五章:圖的遍歷 附:DFS應用之找掛接點

第五章面試題解答 5-31.   DFS和BFS使用了哪些數據結構? 解析:   其實剛讀完這一章,我一開始想到的是用鄰接表來表示圖,但其實用鄰接矩陣也能實現啊?後來才發現應該回答,BFS用隊列實現;DFS可以用棧實現也可以改寫成遞歸形式

原创 《深入理解Nginx》閱讀與實踐(一):Nginx安裝配置與HelloWorld

  最近在讀陶輝的《深入理解Nginx:模塊開發與架構解析》,一是想跟着大牛練練閱讀和編寫開源代碼的能力,二是想學學Nginx優秀的架構設計,三是想找一個點深入下Linux下網絡編程的細節。侯捷在他的《STL源碼剖析》的自序裏說過,“追蹤

原创 常見的動態規劃問題分析與求解

  動態規劃(Dynamic Programming,簡稱DP),雖然抽象後進行求解的思路並不複雜,但具體的形式千差萬別,找出問題的子結構以及通過子結構重新構造最優解的過程很難統一,並不像回溯法具有解決絕大多數問題的銀彈(全面解析回溯法:

原创 《算法設計手冊》面試題解答 第二章

簡介:   《算法設計手冊》(The Algorithm Design Manual)課後面試題和解答。包括:未知大小的集合選取k個元素、數據備份方案、尋找數組最小數時賦值語句執行次數的期望、100層大樓拋大理石(拋燈泡)、電子秤找不足量

原创 《算法設計手冊》面試題解答 第四章:排序和搜索

4-40.   如果給你1,000,000個整數來排序,你會選擇什麼算法?消耗的時間和空間呢? 解析:   我個人傾向於用隨機化的快速排序。   首先是它在平均意義上來看比同樣O(nlogn)的歸併排序和堆排序快(見4-41)。    另

原创 《深入理解Nginx》閱讀與實踐(四):簡單的HTTP過濾模塊

一、Nginx的HTTP過濾模塊特徵   一個請求可以被任意個HTTP模塊處理;   在普通HTTP模塊處理請求完畢並調用ngx_http_send_header()發送HTTP頭部或調用ngx_http_output_filter()發

原创 《深入理解Nginx》閱讀與實踐(二):配置項的使用

  前文鏈接:《深入理解Nginx》閱讀與實踐(一):Nginx安裝配置與HelloWorld     HelloWorld的完成意味着已經踏入了nginx的大門,雖然很振奮人心,但在編寫中仍有很多疑惑的存在:nginx.conf的配置項

原创 《深入理解Nginx》閱讀與實踐(三):使用upstream/subrequest訪問第三方服務

  本文是對陶輝《深入理解Nginx》第5章內容的梳理以及實現,代碼和註釋基本出自此書。   一、upstream:以向nginx服務器的請求轉化爲向google服務器的搜索請求爲例 (一)模塊框架   首先要明確的是,這裏是編寫一個使用

原创 《算法設計手冊》面試題解答 第一章

目錄 系列簡介不用*和/計算整數除法25匹馬找出前5名估算題樣例  系列簡介:   《算法設計手冊》(The Algorithm Design Manual)是本比較經典的算法書了。如果說《算法導論》偏向於數學,那麼《算法設計手冊》更偏向