無師自通最高難度的計算問題!
本書將教你如何解決艱難的程式設計問題,並設計屬於你自己的演算法。透過教學大神Daniel Zingaro從USACO、IOI等世界級程式競賽中精選來的範例,你將學會如何分類問題、選擇資料結構,並辨認出適合的演算法。同時也將學到,你所選擇的資料結構(無論是雜湊表、堆積、或樹)會如何影響執行時間,以及如何讓你的演算法加速,包括應用遞迴、動態規劃、二元搜尋等強大的策略來解決艱難的問題。
透過程式碼的逐一講解,你將學到的演算法和資料結構包括:
❏ 用圖與廣度優先搜尋演算法來尋找桌遊的最佳策略、或是翻譯一本書的最好方法。
❏ 用Dijkstra演算法來判斷有多少老鼠能成功走出迷宮、或是兩個地點之間最短路徑的數量。
❏ 用聯集尋找資料結構來回答關於社群網路上的連結或判斷敵友等問題。
❏ 用堆積資料結構來決定促銷活動期間所送出的獎金金額。
❏ 用雜湊表資料結構來判斷雪花是否獨一無二、或在字典中辨認出複合詞。
➤本書中的每一道問題都可在程式解題系統網站上,由系統判定是否正確解題,網站的網址和問題編號都會列在說明之中。