🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 前言 ## 学习目的 随着信息技术的不断发展,越来越多的同学开始学习程序设计和算法。他们学习算法的目的可能是为了参加NOI系列比赛、ICPC系列比赛,也有可能是为了求职、升学,甚至知识单纯因为喜好,享受算法之美。 ## 课程特点 **特点1**:覆盖重要的初级知识点,打好坚实的基础 本课程从介绍C++语言开始,各个击破程序设计竞赛中的基础考点,包括各种基础算法、数据结构和数学知识。这些都是重中之重,如果没有掌握这些知识,继续深入的学习就如同试图建设空中楼阁。 **特点2**:深入浅出,解答“是什么、为什么、怎么办”的问题 力求使用浅显易懂的语言讲述各种深刻的算法思想,而不是面对冰冷的数学符号和代码。每个专题中都会以精心选择的例题为主线,先介绍这个知识点是用来干什么的;然后通过大量的篇幅,图文并茂地介绍各个知识点的详细过程和代码实现方法;最后结合题目,介绍了如何将算法应用到实战中。有些例题甚至介绍了多种不同做法,帮助拓展思维,举一反三。 **特点3**:充满干货的经验之谈 本课程的多数例题都配备代码风格良好的示例代码,可以帮助学员更好地学习算法如何使用代码实现。在讲解的过程中给出了大量的算法竞赛中需要注意的琐碎问题,这些都是前人的经验之谈,希望让学员可以少走弯路。 **特点4**:讲练结合,提供大量的练习机会 题目选材范围多样,覆盖了应当学习了解的知识点。如果学员能够完全掌握这些题目,相信可以有相当程度的进步。 ## 内容安排 第一阶段,介绍了C++语言的基本知识,包括表达式、变量、分支、循环、数组、函数、字符串、结构体等内容,后续所有内容都需要使用到这些语言基础。同时辅以一些需要思考的入门算法题目,在学习语言的过程中初步接触到算法的思维之美。 第二阶段,介绍了一些基础算法,包括模拟、高精度、排序、枚举、递推、递归、贪心、二分、搜索等。这些基础算法是程序设计竞赛中的重要部分。学习完这一部分可以解决一些简单算法题目。 第三阶段,介绍了几种简单常用的数据结构,包括线性表、二叉树、并查集、哈希表和图。数据结构是存储和操作数据的骨架,许多算法的实现需要依赖各种数据结构。 第四阶段,是在算法竞赛中需要使用数学基础,包括进制转换、位运算、计数原理、排列组合、质数合数、约数倍数等概念。数学问题也是算法竞赛的常考点,虽然相对比较抽象,但也应当掌握。 ## 学习建议 如果希望从蒟蒻(巨弱的谐音,指新手)成长为神犇(非常厉害的选手),学习的过程绝不是轻松的。学习如同登山,唯有坚持不懈才能看到山顶美丽的风景。希望学员可以做到: **熟悉固定套路与算法模板**:这些知识点学习起来很明确。学员应当理解每一种算法能干什么、适用于什么场合、算法复杂度是什么。除此之外还要反复的敲算法模板,从空白文件开始敲直到一遍通过为止,这一点你必须很熟练。 **分析方法与编程经验**:如果希望能够熟练掌握算法,增强思维敏捷性,在学习完算法与数据结构后,必须要大量的完成相关的题目。本课程普及组学完应完成至少300题的题量。只有自己亲自动手实践学到的东西才是自己的。 **保证程序正确**:培养一次写对的能力,提交评测之前要谨慎。学会怎么调试自己的程序。就算感觉对拍办不到(能写出个暴力就不错了),也应该人工生成多组数据,手算结果,然后测试自己的程序对不对。所有犯过的错误都要写笔记,并且不再犯第二次。