前言
資料結構和演算法在電腦知識系統中有著舉足輕重的作用,這塊知識也有非常經典的教材供我們學習。但是,我們刷的演算法題往往會在經典的演算法思想之上套層皮,所以很容易讓人產生這種感覺:我以前的資料結構和演算法學得挺好的,為什麼這些演算法題我完全沒想法呢?
面對這種疑惑,可能就會有人擺出好幾本演算法相關的大部頭,建議你去進修。
有些書確實很經典,但我覺得我們應該搞清楚自己的目的是什麼。如果你是學生,對演算法有濃厚的興趣,甚至說以後準備搞這方面的研究,那我覺得你可以去啃一啃大部頭;但事實是,大部分人學習演算法是為了應對考試,這種情況去啃大部頭的C/P值就比較低了,更高效的方法是直接刷題。
但是,刷題也是有技巧的,刷題平臺動輒幾千道題,難道你全刷完嗎?最高效的刷題方式是邊刷邊歸納總結,抽象出每種題型的策略框架,以不變應萬變。我個人還是挺喜歡刷題的,經過長時間的累積總結,沉澱出了這本書,希望能給你帶來想法上的啟發和指導。
解演算法題的核心只有一個,那就是窮舉。不同的演算法,無非就是聰明的窮舉和笨一點的窮舉而已,真的沒什麼高深莫測的,讀完本書,你就會有深刻的體會。