Dotcpp  >  编程教程  >  从入门到进阶  >  竞赛学习路线推荐(算法数据结构)

竞赛学习路线推荐(算法数据结构)

点击打开在线编译器,边学边练

阅读这一节之前,请确认你熟悉的语言,无论C、C++、java都已经很熟练运用,不存在语法问题了,否则参考本节的学习路线会让你变得着急和打退堂鼓


对于已经掌握一种语言可以参赛之后,算法和数据结构的学习,笔者认为大体分三个步骤:

  1. 那些顺带的、不用专门学的常规算法和数据结构;这些如递归算法、遍历枚举、模拟、素数等常规算法甚至只能算的上是技巧

  2. 系统学习的算法数据结构;这是耗费时间最长最耗脑的部分之一,你需要找一本数据结构的书或者课程,系统完整的理解其中的算法并训练。

  3. 算法的学习;这也是耗费时间最长最耗脑的部分之二,如果说数据结构普遍是一种抽象空间的想象的话,那这部分大部分就都是数学的东西的,各种听过的、没有听过的算法名字都会这里出现。

  4. 专题类,或需要单独学的算法。比如并查集、RMQ或者是这种专门的或者比较少见的算法


对于第一部分,笔者建议在巩固语法的做题过程中就训练了,大量的模拟题、简单题自然就会训练这些常见的算法数据结构。这部分足以刷300~500题,有了这个基础,非常客观的说,就已经可以参加蓝桥杯 或 ACM锻炼了,并且省赛拿奖的几率是非常大的。


对于第二部分,这部分知识通常大学计算机相关的专业《数据结构》课程就有涉及,但不同于大学的要求,我们竞赛的要求不仅仅局限于知识的理解,还要能运用写出来,如最短路径问题、图的遍历、二叉树的搜索等等。


对于第三部分,普遍大学即便本专业的学生也没有专门的教材了,只能自行购买,如主流的一些竞赛算法教程,或一些竞赛专业的学校的内部集训教材等等。这部分的学习建议是,不必全部学习完,这个是一个长期的过程,边学边练边竞赛,在赛中锻炼弥补不足。不必一定要学完才能参赛,要避免这种心理障碍


对于第四部分,能有这部分需求,应该是已经去得到一定成绩,也知道自己哪里不足了,也有了一套自己的学习方法。想必那个时候大家就自己知道如何做了


以上四部分,乃一家之言,实际学习并非一定这样安排,大家可以根据情况安排,但无论如何规划内容、进度,都一定要把刷题训练当作最重要的一个环节。一定要上机敲代码能解决问题作为标准,别忘了,我们是要竞赛而不是讲课。


推荐教程:数据结构教程算法竞赛教程


本文固定URL:https://www.dotcpp.com/course/847

Dotcpp在线编译      (登录可减少运行等待时间)