興趣愛好【演算法】

LuaSm發表於2017-08-09

我是一名大學生,對演算法無比的喜歡,羨慕所謂騰訊科恩實驗室裡的各號大神,演算法是準備的重中之重,舍友推薦了《挑戰程式設計競賽2:演算法和資料結構 》這本書。花了兩週的時間大體過了一遍,該書真切地讓我理解了“智商是硬傷”這句話的含義。我對它的評價是:如果智商小於120,只看前兩章就夠了;智商大於120小於150,三四章的簡單章節還是可以看一下的;智商大於150,看完本書問題不大。望大家量力而為,否則你的自信心會遭受嚴重的打擊。

在這之前看完了《演算法競賽入門經典(第2版) 》,看著看著感覺這本書寫得太好了,這本書的優點有:

1、 貼近競賽

競賽畢竟不同於理論上的演算法設計。有些在具體程式實現中的常犯錯誤,如果沒有人點撥,新手往往就會栽在這上面,而新手一般不怎麼會除錯程式,經常花了很多時間才會發現是一個非常小的錯誤。 有些理論雖然知道虛擬碼,但是自己寫出來又臭又長,這就需要學習別人的優越寫法。有些寫法雖然會慢一些,但是程式碼簡短,易於競賽中的編碼(越長的程式碼潛在通過成本(包括錯誤提交的懲罰和除錯時間等)就越高)。這本書中給出了大部分關鍵演算法的具體實現程式碼,並且很優越,值得借鑑和學習,特別是本書中利用STL優先佇列來實現堆優化的dijkstra那段程式碼堪稱完美,筆者在之前實現同樣功能的模組,長度一般在其3倍以上……而在一般的理論書籍裡面是沒有這些內容的。

2、OJ題目

記得原來的競賽書後面也有題目,但是卻只有題面(有些甚至沒有資料範圍!),沒有資料,編寫出程式也不知道對不對(不過會有人編寫那種無法驗證對錯的習題麼……)。把題目放到OJ上,寫出程式之後可以及時評測。

相信圖靈這本《挑戰程式設計競賽2:演算法和資料結構 》一定會讓我更加受益匪淺,演算法之路越走越遠,加油!

相關文章