這本書籍是《算法筆記》的配套訓(xùn)練書籍,有著PAT甲乙級的全部真題,并且每道題的題解都相當(dāng)詳細(xì),給出的代碼也進(jìn)行了大量的注釋,真正做到了“題解”二字,讀者在認(rèn)真研習(xí)本書后可以對代碼能力得到不小的提升。本書同時也是作者的實(shí)戰(zhàn)經(jīng)驗,書中總結(jié)了很多技巧,不僅可以作為考研機(jī)試和PAT的學(xué)習(xí)教材,對其他的一些算法考試(例如CCF的CSP考試)或者考研初試的數(shù)據(jù)結(jié)構(gòu)科目的學(xué)習(xí)和理解也很有幫助,甚至僅僅想學(xué)習(xí)經(jīng)典算法的讀者也能從本書中學(xué)到許多知識。傳統(tǒng)的習(xí)題類書籍都有著一個問題,那就是書中的內(nèi)容無法“與時俱進(jìn)”,一旦成書之后便無法在短時間內(nèi)進(jìn)行修改或者完善。但是本書和《算法筆記》相同,也采用了書籍二維碼的方式,這使得本書可以隨時添加、更新題目,或者對書中的講解進(jìn)行更進(jìn)一步的深入?梢哉f這本書是一本“活”的習(xí)題集,能夠真正做到“與時俱進(jìn)”。 本書簡介: 本書是《算法筆記》的配套習(xí)題集,內(nèi)容按照《算法筆記》的章節(jié)順序進(jìn)行編排,其中整理歸類了PAT甲級、乙級共150多道題的詳細(xì)題解,大部分題解均編有題意、樣例解釋、思路、注意點(diǎn)、參考代碼,且代碼中包含了詳細(xì)的注釋。讀者可以通過本書對《算法筆記》的知識點(diǎn)進(jìn)行更深入的學(xué)習(xí)和理解。書中印有大量二維碼,用以實(shí)時更新或補(bǔ)充書籍的內(nèi)容及發(fā)布本書的勘誤。本書可作為計算機(jī)專業(yè)研究生入學(xué)考試復(fù)試上機(jī)、各類算法等級考試(如PAT、CSP等)的輔導(dǎo)書,也可作為考研時“數(shù)據(jù)結(jié)構(gòu)”科目的教材及輔導(dǎo)書內(nèi)容的補(bǔ)充。本書還是學(xué)習(xí)C語言、數(shù)據(jù)結(jié)構(gòu)與算法的入門輔導(dǎo)書,非常適合零基礎(chǔ)的學(xué)習(xí)者對經(jīng)典算法進(jìn)行學(xué)習(xí)。 目錄: 前言第1章本書的使用方法1第2章C/C快速入門22.1基本數(shù)據(jù)類型22.2順序結(jié)構(gòu)22.3條件結(jié)構(gòu)22.4循環(huán)結(jié)構(gòu)22.5數(shù)組32.6函數(shù)32.7指針32.8結(jié)構(gòu)體(struct)的使用32.9補(bǔ)充32.10黑盒測試4第3章入門篇(1)——入門模擬53.1簡單模擬53.2查找元素293.3圖形輸出433.4日期處理503.5進(jìn)制轉(zhuǎn)換503.6字符串處理58第4章入門篇(2)——算法初步874.1排序874.2散列1284.3遞歸1484.4貪心1484.5二分1654.6twopointers1764.7其他高效技巧與算法184第5章入門篇(3)——數(shù)學(xué)問題1895.1簡單數(shù)學(xué)1895.2最大公約數(shù)與最小公倍數(shù)2015.3分?jǐn)?shù)的四則運(yùn)算2035.4素數(shù)2095.5質(zhì)因子分解2185.6大整數(shù)運(yùn)算2235.7擴(kuò)展歐幾里得算法2315.8組合數(shù)231第6章C標(biāo)準(zhǔn)模板庫(STL)介紹2326.1vector的常見用法詳解2326.2set的常見用法詳解2386.3string的常見用法詳解2416.4map的常用用法詳解2446.5queue的常見用法詳解2566.6priority_queue的常見用法詳解2566.7stack的常見用法詳解2576.8pair的常見用法詳解2576.9algorithm頭文件下常用函數(shù)介紹257第7章提高篇(1)——數(shù)據(jù)結(jié)構(gòu)專題(1)2587.1棧的應(yīng)用2587.2隊列的應(yīng)用2617.3鏈表處理264第8章提高篇(2)——搜索專題2788.1深度優(yōu)先搜索(DFS)2788.2廣度優(yōu)先搜索(BFS)281第9章提高篇(3)——數(shù)據(jù)結(jié)構(gòu)專題(2)2869.1樹與二叉樹2869.2二叉樹的遍歷2869.3樹的遍歷2969.4二叉查找樹(BST)3169.5平衡二叉樹(AVL樹)3259.6并查集3299.7堆3339.8赫夫曼樹337第10章提高篇(4)——圖算法專題33810.1圖的定義和相關(guān)術(shù)語33810.2圖的存儲33810.3圖的遍歷33810.4最短路徑35710.5最小生成樹38510.6拓?fù)渑判?8610.7關(guān)鍵路徑386第11章提高篇(5)——動態(tài)規(guī)劃專題38711.1動態(tài)規(guī)劃的遞歸寫法和遞推寫法38711.2最大連續(xù)子序列和38711.3最長不下降子序列(LIS)39011.4最長公共子序列(LCS)39211.5最長回文子串39411.6DAG最長路39611.7背包問題39611.8總結(jié)399第12章提高篇(6)——字符串專題40012.1字符串hash40012.2KMP算法402第13章專題擴(kuò)展40313.1分塊思想40313.2樹狀數(shù)組40613.3快樂模擬408附錄430 前言第1章 本書的使用方法1第2章 C/C快速入門22.1 基本數(shù)據(jù)類型22.2 順序結(jié)構(gòu)22.3 條件結(jié)構(gòu)22.4 循環(huán)結(jié)構(gòu)22.5 數(shù)組32.6 函數(shù)32.7 指針32.8 結(jié)構(gòu)體(struct)的使用32.9 補(bǔ)充32.10 黑盒測試4第3章 入門篇(1)——入門模擬53.1 簡單模擬53.2 查找元素293.3 圖形輸出433.4 日期處理503.5 進(jìn)制轉(zhuǎn)換503.6 字符串處理58第4章 入門篇(2)——算法初步874.1 排序874.2 散列1284.3 遞歸1484.4 貪心1484.5 二分1654.6 twopointers1764.7 其他高效技巧與算法184第5章 入門篇(3)——數(shù)學(xué)問題1895.1 簡單數(shù)學(xué)1895.2 最大公約數(shù)與最小公倍數(shù)2015.3 分?jǐn)?shù)的四則運(yùn)算2035.4 素數(shù)2095.5 質(zhì)因子分解2185.6 大整數(shù)運(yùn)算2235.7 擴(kuò)展歐幾里得算法2315.8 組合數(shù)231第6章 C標(biāo)準(zhǔn)模板庫(STL)介紹2326.1 vector的常見用法詳解2326.2 set的常見用法詳解2386.3 string的常見用法詳解2416.4 map的常用用法詳解2446.5 queue的常見用法詳解2566.6 priority_queue的常見用法詳解2566.7 stack的常見用法詳解2576.8 pair的常見用法詳解2576.9 algorithm頭文件下常用函數(shù)介紹257第7章 提高篇(1)——數(shù)據(jù)結(jié)構(gòu)專題(1)2587.1 棧的應(yīng)用2587.2 隊列的應(yīng)用2617.3 鏈表處理264第8章 提高篇(2)——搜索專題2788.1 深度優(yōu)先搜索(DFS)2788.2 廣度優(yōu)先搜索(BFS)281第9章 提高篇(3)——數(shù)據(jù)結(jié)構(gòu)專題(2)2869.1 樹與二叉樹2869.2 二叉樹的遍歷2869.3 樹的遍歷2969.4 二叉查找樹(BST)3169.5 平衡二叉樹(AVL樹)3259.6 并查集3299.7 堆3339.8 赫夫曼樹337第10章 提高篇(4)——圖算法專題33810.1 圖的定義和相關(guān)術(shù)語33810.2 圖的存儲33810.3 圖的遍歷33810.4 最短路徑35710.5 最小生成樹38510.6 拓?fù)渑判?8610.7 關(guān)鍵路徑386第11章 提高篇(5)——動態(tài)規(guī)劃專題38711.1 動態(tài)規(guī)劃的遞歸寫法和遞推寫法38711.2 最大連續(xù)子序列和38711.3 最長不下降子序列(LIS)39011.4 最長公共子序列(LCS)39211.5 最長回文子串39411.6 DAG最長路39611.7 背包問題39611.8 總結(jié)399第12章 提高篇(6)——字符串專題40012.1 字符串hash40012.2 KMP算法402第13章 專題擴(kuò)展40313.1 分塊思想40313.2 樹狀數(shù)組40613.3 快樂模擬408附錄430 前言本書作為《算法筆記》的配套習(xí)題集,適合用于研究生復(fù)試上機(jī)、PAT甲級與乙級考試、CCF的CSP認(rèn)證等算法考試。本書中的題目全部配有詳細(xì)的題解,大部分題目都包含題意、樣例解釋、思路、注意點(diǎn)及參考代碼。使用本書前,讀者應(yīng)先閱讀本書的配套教材《算法筆記》的對應(yīng)章節(jié),然后再以本書中的習(xí)題作為訓(xùn)練。訓(xùn)練時先獨(dú)立思考,不要馬上看書中的思路和相關(guān)內(nèi)容,如果有不會的題目可以暫時先跳過,過段時間再回頭重新做。如果題目確實(shí)有些難度,想了很久也不得要領(lǐng),那么可以閱讀該題的思路部分;如果多次提交卻總是無法通過全部數(shù)據(jù)點(diǎn),那么可以閱讀該題的注意點(diǎn)部分,看看有什么邊界數(shù)據(jù)是自己沒有注意到的;當(dāng)對該題的寫法不太確定時,也可以閱讀參考代碼。本書適合進(jìn)行專題訓(xùn)練,即對一個章節(jié)的題目進(jìn)行集中訓(xùn)練,這有助于對同一個算法進(jìn)行詳細(xì)且細(xì)致的訓(xùn)練,而不會出現(xiàn)為了做題而做題、從頭到尾刷完P(guān)AT之后卻還是一點(diǎn)感覺都沒有的情況。本書上有些來自codeup的習(xí)題,可供讀者練習(xí)使用。另外,本書將在每小節(jié)的最后配有一個二維碼,用以更新本節(jié)內(nèi)容或是對本節(jié)的新題進(jìn)行補(bǔ)充;每章最后也會有一個二維碼,用來補(bǔ)充新內(nèi)容。本書的勘誤和內(nèi)容更新日志均體現(xiàn)在下面的二維碼,可供讀者查看實(shí)時更新。
|