挑戰程序設計競賽2 算法和數據結構

[日]渡部有隆

立即出貨

買這商品的人也買了...

商品描述

本書分為準備篇、基礎篇和應用篇三大部分,借助在線評測系統Aizu Online Judge以及大量例題,詳細講解了算法與復雜度、初等和高等排序、搜索、遞歸和分治法、動態規劃法、二叉搜索樹、堆、圖、計算幾何學、數論等與程序設計競賽相關的算法和數據結構,既可以作為挑戰程序設計競賽的參考書,也可以用來引導初學者系統學習算法和數據結構的基礎知識。本書適合所有程序設計人員、程序設計競賽愛好者以及高校電腦專業師生閱讀。

作者簡介

渡部有隆(作者)
出生於1979年,計算機理工學博士。會津大學計算機理工學部信息系統學部門副教授。專業領域為可視化編程語言。AIZU ONLINE JUDGE開發者。
Ozy(審校)
本名岡田佑一,出生於日本大阪的短碼高手。他花費相當長的時間提升短碼編程技術,進而將其發展成一種技能,曾獲得程序設計大賽的冠軍。他開辦過程序設計方面的培訓班,目前致力於數學教育和程序設計師的培養工作。曾著有《短碼之美:變成達人的心得技法》(人民郵電出版社)。
秋葉拓哉(審校)
2011年考入東京大學研究生院。以iwi的暱稱活躍在程序設計競賽中。TopCoder評級好成績為世界第四(2013年)。《挑戰程序設計競賽(第2版)》(人民郵電出版社)作者之一。

目錄大綱

第1部分[準備篇]攻克程序設計競賽的學習方法\t1 
第1章有效運用在線評測系統\t3 
1.1攻克程序設計競賽的學習方法\t3 
1.2什麼是在線評測\t7 
1.3用戶註冊\t9 
1.4瀏覽問題\t10 
1.5解答問題\t12 
1.6個人頁面\t18 
1.7如何運用本書\t19 
第2部分[基礎篇]為程序設計競賽做準備的算法與數據結構\t21 
第2章算法與復雜度\t23 
2.1算法是什麼\t23 
2.2問題與算法示例\t23 
2.3偽代碼\t25 
2.4算法的效率\t26 
2.5入門問題\t28 
第3章初等排序\t33 
3.1挑戰問題之前——排序\t33 
3.2插入排序法\t35
3.3冒泡排序法\t40 
3.4選擇排序法\t44 
3.5穩定排序\t48 
3.6希爾排序法\t52 
第4章數據結構\t57 
4.1挑戰問題之前——什麼是數據結構\t57 
4.2棧\t59 
4.3隊列\t64 
4.4鍊錶\t70 
4.5標準庫的數據結構\t77 
4.6數據結構的應用——計算面積\t86 
第5章搜索\ t89 
5.1挑戰問題之前——搜索\t89 
5.2線性搜索\t91 
5.3二分搜索\t94 
5.4散列法\t98 
5.5借助標準庫搜索\t102 
5.6搜索的應用— —計算最優解\t106 
第6章遞歸和分治法\t109 
6.1挑戰問題之前——遞歸與分治\t109 
6.2窮舉搜索\t111 
6.3科赫曲線\t114 
第7章高等排序\t119 
7.1歸併排序\t120 
7.2分割\t125 
7.3快速排序\t129 
7.4計數排序\t133 
7.5利用標準庫排序\t137 
7.6逆序數\t139
7.7最小成本排序\t143 
第8章樹\t147 
8.1挑戰問題之前——樹結構\t148 
8.2有根樹的表達\t150 
8.3二叉樹的表達\t154 
8.4樹的遍歷\t159 
8.5樹遍歷的應用——樹的重建\t163 
第9章二叉搜索樹\t167 
9.1挑戰問題之前——二叉搜索樹\t168 
9.2二叉搜索樹——插入\ t169 
9.3二叉搜索樹——搜索\t174 
9.4二叉搜索樹——刪除\t177 
9.5通過標準庫管理集合\t182 
第10章堆\t189 
10.1挑戰問題之前——堆\t190 
10.2完全二叉樹\t191 
10.3最大/最小堆\t193 
10.4優先級隊列\t197 
10.5通過標準庫實現優先級隊列\t201 
第11章動態規劃法\t203 
11.1挑戰問題之前——動態規劃法的概念\t203 
11.2斐波那契數列\t204 
11.3最長公共子序列\t208 
11.4矩陣鏈乘法\t211 
第12章圖\t217 
12.1挑戰問題之前——圖\t218 
12.2圖的表示\t221
12.3深度優先搜索\t224 
12.4廣度優先搜索\t232 
12.5連通分量\t237 
第13章加權圖\t241 
13.1挑戰問題之前——加權圖\t242 
13.2最小生成樹\t244 
13.3單源最短路徑\t249 
第3部分[應用篇]程序設計競賽的必備程序庫\t261 
第14章高等數據結構\t263 
14.1互質的集合\t264 
14.2範圍搜索\t269 
14.3其他問題\t278 
第15章高等圖算法\t279 
15.1所有點對間最短路徑\t280 
15.2拓撲排序\t284 
15.3關節點\t290 
15.4樹的直徑\t295 
15. 5最小生成樹\t299 
15.6其他問題\t303 
第16章計算幾何學\t305 
16.1幾何對象的基本元素與表現\t306 
16.2直線的正交/平行判定\t312 
16.3投影\ t314 
16.4映像\t316 
16.5距離\t317 
16.6逆時針方向\t321 
16.7判斷線段相交\t324 
16.8線段的交點\t326
16.9圓與直線的交點\t328 
16.10圓與圓的交點\t331 
16.11點的內包\t333 
16.12凸包\t335 
16.13線段相交問題\t339 
16.14其他問題\t343 
第17章動態規劃法\t345 
17.1硬幣問題\t346 
17.2背包問題\t349 
17.3最長遞增子序列\t353 
17.4最大正方形\t357 
17.5最大長方形\t360 
17.6其他問題\t364 
第18章數論\t367 
18.1質數檢驗\t368 
18.2最大公約數\t372 
18.3冪乘\t376 
18.4其他問題\t378 
第19章啟發式搜索\t381 
19.1八皇后問題\t382 
19.2九宮格拼圖\t386 
19.3十六格拼圖\t391 
附錄\t399 
通過本書可以獲得的技能\t400 
挑戰以往的程序設計競賽真題!\t402 
參考文獻\t404