我是一名大学生,对算法无比的喜欢,羡慕所谓腾讯科恩实验室里的各号大神,算法是准备的重中之重,舍友推荐了《挑战程序设计竞赛2:算法和数据结构 》这本书。花了两周的时间大体过了一遍,该书真切地让我理解了“智商是硬伤”这句话的含义。我对它的评价是:如果智商小于120,只看前两章就够了;智商大于120小于150,三四章的简单章节还是可以看一下的;智商大于150,看完本书问题不大。望大家量力而为,否则你的自信心会遭受严重的打击。

在这之前看完了《算法竞赛入门经典(第2版) 》,看着看着感觉这本书写得太好了,这本书的优点有:

1、 贴近竞赛

竞赛毕竟不同于理论上的算法设计。有些在具体程序实现中的常犯错误,如果没有人点拨,新手往往就会栽在这上面,而新手一般不怎么会调试程序,经常花了很多时间才会发现是一个非常小的错误。 有些理论虽然知道伪代码,但是自己写出来又臭又长,这就需要学习别人的优越写法。有些写法虽然会慢一些,但是代码简短,易于竞赛中的编码(越长的代码潜在通过成本(包括错误提交的惩罚和调试时间等)就越高)。这本书中给出了大部分关键算法的具体实现代码,并且很优越,值得借鉴和学习,特别是本书中利用STL优先队列来实现堆优化的dijkstra那段代码堪称完美,笔者在之前实现同样功能的模块,长度一般在其3倍以上……而在一般的理论书籍里面是没有这些内容的。

2、OJ题目

记得原来的竞赛书后面也有题目,但是却只有题面(有些甚至没有数据范围!),没有数据,编写出程序也不知道对不对(不过会有人编写那种无法验证对错的习题么……)。把题目放到OJ上,写出程序之后可以及时评测。

相信图灵这本《挑战程序设计竞赛2:算法和数据结构 》一定会让我更加受益匪浅,算法之路越走越远,加油!