梦想着在编程奥林匹克运动会上获得金牌(ACM ICPC)?想要通过Google Kickstart或想赢得$ 20, 000的奖金, 成为世界冠军Facebook Hackercup, Google Code卡纸?然后, 你必须是开箱即用的问题解决者。这些是一些最著名的全球算法编程竞赛, 来自世界各地的程序员利用其思考能力, 创造力, 协作能力, 创新能力和承受压力的能力, 运用其编码技能来解决现实世界中的问题。
竞争性编程不过是一项运动, 你的代码需要击败其他人。因此, 仅解决一个问题是不够的, 但是你必须以最优化的方式来解决, 同时将时间复杂度和辅助空间降至最低。现在, 如果你想要这样编写代码, 则必须掌握基础知识, 并且应该学习编程各个方面的深入概念, 数据结构e和算法。只有一本好书才能教和指导成为更好的程序员。这里有一些杰出的书籍, 它们不仅教授编程语言的语法和语义, 而且还帮助你思考, 组织并成为一个好的问题解决者, 这对于程序员而言确实是最重要的一课。
1.算法导论:
这本书是《竞争编码圣经》, 写得精美, 是一本全面的教科书, 深入介绍了所有现代算法。这是一本完整的组织性权威书籍, 介绍了设计和分析算法, 可供所有级别的读者使用。市场上大多数关于算法的书都是严谨和不完整的, 或者涵盖了没有严谨的大量材料, 但是这本书是一个罕见的例子, 将严谨和全面结合了。本书的前半部分提供了一种研究算法的有效方法, 而后半部分则针对具有更强吸引力的材料, 介绍了这个引人入胜的领域中的可能性和挑战的高级读者和好奇的学生。
- 每章都井井有条, 最适合自学。
- 伪代码旨在被任何初学者级的程序员读取。
- 在不影响覆盖深度或数学刚性的前提下进行基本解释。
- 在算法中被广泛用作研究参考, 在已发表的论文中被广泛引用为算法的参考(超过10, 000次引用)。
- 畅销书编程书籍, 最初几年售出了50万本。
2.史蒂文·哈利姆(Steven Halim)的《竞争编程3》:
这是一本核心的竞争性编程书籍, 专门为蓬勃发展的国际信息学奥林匹克(IOI)和ACM国际大学编程竞赛(ICPC)设计, 这是每一个竞争性程序员都必须具备的知识。从普通的编码器到世界上最有竞争力的程序员之一, 掌握本书的内容都是非常必要的。它包含一组相关的数据结构, 算法和编程技巧, 旨在在这些竞赛中更具竞争力。对于那些喜欢用编程解决问题的人, 以及那些想在大型IT公司进行面试的人来说, 这本书都是一种享受。
- 为你提供计算机科学中解决问题范例的强大下限。
- 涵盖了各种各样的问题, 其中许多问题因社区中流行的在线法官而闻名。
- 用一些示例问题解释每种算法, 从而以务实的方式深入理解。
- 专门针对练习, 针对每个主题进行一些示例练习, 以更好地掌握。
- 指导任何热情的算法问题解决者的杰作。
3.Antti Laaksonen的竞争性编程指南:
这是一本易于理解的理想参考书, 全面介绍了现代竞争性编程。它主要侧重于通过竞争性编程来学习算法, 以鼓励设计可用于实际问题的算法。本书还提高了程序员的调试技能, 并影响了以竞争方式解决问题所需的思维。本书包含许多技巧和窍门, 这些技巧和窍门对任何有竞争力的程序员都非常有用。
- 描述如何编写有效的算法来快速处理大型数据集,
- 提供有关C ++标准库数据结构的深入概念,
- 一种用于动态编程优化和图算法的高效算法设计技术,
- 对高级算法设计主题(如位并行和摊销分析)的描述简单易行,
- 专长于树木, 几何算法, 并讨论竞争性编程的数学主题,
- 本书包含各种难度级别的广泛主题, 适合初学者和经验丰富的读者。
4.Steven S Skiena的编程挑战:
这是一本写得很好的竞争性编程书籍, 用于自学, 教授算法和编程方面的创新课程以及进行国际竞争。国际编程竞赛是提高算法和编码技能的最佳方法, 因此, 本书利用编程竞赛类型的问题来激发算法的学习, 并包括100多种编程挑战以及解决这些挑战的必要理论和关键概念。本书中所有有趣的问题都按主题进行了结构合理的安排, 以使你对算法技术和高级编码主题都有具体的了解。
- 没有大量适合自学的编程问题
- 在线评审, 网址为www.programming-challenges.com
- 适合准备主要编程内容, 例如ACM ICPC, IOI和Topcoder Challenge。
- 简要介绍了一些关键要素(例如数论, 几何, 动态编程和图形算法)中的质量概念,
- 程序使用流行的编程语言(例如C, C ++和Java)编写。
5.算法设计手册:
它是最畅销的经典书籍之一, 揭示了设计算法并分析其优化效率背后的奥秘。它不仅是算法设计课程首选的主要教科书, 而且还是面向程序员, 研究人员和学生的算法的最佳实用参考指南, 可让你直接使用组合算法技术。本书还提供了许多简短的技巧和窍门, 其中包括算法资源, 实现和大量参考书目的设计和分析计算机算法。
- 在线讲座支持, 其中包含完全更新的讲座幻灯片, 音频和视频。
- 更新了有关C ++和Java中最佳算法实现的链接,
- 包含在实践中最常出现的最流行的算法问题,
- 提供来自实际应用程序的独特问题,
- 适用于所有级别的读者, 并提供完整的指导。
最重要的是学习核心基本概念并进行大量练习。你可以选择其中任何一本书, 然后开始学习并开始编码。这些书的最好之处在于, 它将使你在成为有竞争力的程序员的过程中保持动力。因此, 不要停止学习, 继续追赶, 最重要的是继续练习。