第1章 如何使用本书
该书是算法笔记的第一章内容的概要,同时作者在会在B站同步更新视频,欢迎关注三连支持!您的支持就是我更新的动力!
1.1本书的基本内容
第2章是对C语言的语法做讲解,同时融入了部分c++特性
第3-5章是入门,第3章是训练基本的编写代码能力,第4章介绍基本算法思想,第5章是一些数学问题。
第6章介绍C++STL容器和Algorithm头文件下的常用函数
第7-12章是进阶部分,第7章介绍栈、队列和链表,第8章介绍深度优先搜索和广度优先搜索,第9、10章介绍树、图算法,第11章介绍动态规划,第12章介绍字符串hash和KMP算法
第13章是在前面章节的基础上增加的额外内容。
根据需要的不同,可以以不同方式来学习。对于研究生复试,本书涵盖了大部分学校的机试内容。对于PAT乙级,前7章基本够用;对于甲,需要掌握本书大部分内容;对于CCF的CSP认证,本书涵盖竞赛内容以外的考点;对于考研初试数据结构科目,本书能够帮助读者更好的理解各种数据结构和算法。
另外,本书的配套习题册--实战指南,给出了PAT乙级前50题,甲级前107题的详细题解。
本书推荐"阅读一节本书的内容,然后做一节习题对应小节的题目"的训练方式
1.2如何选择编程语言和编译器
一般来说,可供选择的语言有c、c++、java、python等。一般常使用c或者c++,又由于c++向下兼容c,并且c的输出比c++快很多,所以一般主体使用c,辅之以c++的一些特性和功能。
编译器的选择因人而异,因现场环境而异。不同考试,可能会提供不同的编译器,一般来说,可能出现VC6.0,VS系列,Dev-C++,C-Free,Code:Bloks,Eclipse等。其中VC6.0很老,很多语法可能无法通过编译,所以尽量不要使用;Dev-C++,C-Free,Code:Bloks则是轻便好用的编译器,推荐使用;VS系列比较厚重;Eclipse则常用于Java的编写。
1.3在线评测系统
在线评测系统又称为OJ(Online Judge),以下简称OJ。需要注意的是,即使代码通过样例,也不代表完全正确。
本书的例题和 习题来自于PAT和codeup
(1)PAT
(2)codeup
...
1.4常见的评测结果
序号 | 中文解释 | 英文 | 缩写 | 简答解释 |
---|---|---|---|---|
(1) | 答案正确 | Accepted | AC | 通过测试数据 |
(2) | 编译错误 | Compile Error | CE | 没法通过编译,可以本地编译通过,再提交,如果还是不行,看看是不是选错了语言 |
(3) | 答案错误 | Wrong Answer | WA | 最常见的错误,代码有漏洞,或者算法本身就是错误的,可能是输出了多余的调试信息 |
(4) | 运行超时 | Time Limit Exceeded | TLE | 时间复杂度超过程序限制,需要尝试更高效的算法,或者出现了死循环 |
(5) | 运行错误 | Runtime Error | RE | 出现的可能性比较多,比如段错误(访问非法内存,比如指针越界等等),浮点错误(除0错),递归爆栈等等 |
(6) | 内存超限 | Memory Limit Exceeded | MLE | 空间复杂度超过程序限制 |
(7) | 格式错误 | Presentation Error | PE | 最接近AC的错误,基本由于多输出了空格或者换行导致,稍作调整,就可以 |
(8) | 输出超限 | Output Limit Exceeded | OLE | 程序输出了过量内容,比如大量调试或者死循环输出等等 |
1.5如何高效地做题
一般来说,按照算法专题进行集中性的题目训练时算法学习的较好方法,不推荐随意乱做或者,按题号从小到大刷,无法形成完整的知识体系。
如果某道题没有想法,可以先放着跳过,以后回来刷,或者看题解,知道解题过程以后,自己写。
另外,适当总结相似题目的解题方法,可以事半功倍!