forked from soulmachine/acm-cheat-sheet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathabstract.tex
35 lines (24 loc) · 2.73 KB
/
abstract.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
\subsubsection{内容简介}
本书的目标读者是准备去北美找工作的码农,也适用于在国内找工作的码农,以及刚接触ACM算法竞赛的新手。
本书包含了一些经典题目的范例代码,经过精心编写,编码规范良好,适合在纸上默写。
怎么样才算是经典的算法题?一般经典的题目都有约定俗成的名称,例如“八皇后问题”,“0-1背包问题”等,这些名字已经固定下来了,类似于一个“成语”,一般说出名字,大家就都知道题目意思了,不用再解释题目内容,这就是所谓的“经典”。同时,本书的每一个题目,都至少在两本纸质书中出现过。
这本书的定位,与ACM算法竞赛类书籍不同。全书的题目比ACM竞赛简单,没有高难度的题目,但每道题目,都有详细生动的解释,还给出了可以直接在OJ上AC的代码。同时,题目的范围不限于算法竞赛,还包括了一些面试中常碰到的工程类题目。
全书的代码,使用“纯C + STL”的风格。本书中的代码规范,跟在公司中的工程规范略有不同,为了使代码短(方便迅速实现):
\begindot
\item 所有代码都是单一文件。这是因为一般OJ网站,提交代码的时候只有一个文本框,如果还是
按照标准做法,比如分为头文件.h和源代码.cpp,无法在网站上提交;
\item 喜欢在全局定义一个最大整数,例如MAX。一般的OJ题目,都会有数据规模的限制,所以定义
一个常量MAX表示这个规模,可以不用动态分配内存,让代码实现更简单;
\item 经常使用全局变量。比如用几个全局变量,定义某个递归函数需要的数据,减少递归函数的参数
个数,就减少了递归时栈内存的消耗,可以说这几个全局变量是这个递归函数的“环境”。
\item 不提倡防御式编程。不需要检查malloc()/new 返回的指针是否为NULL;不需要检查内部函数入口
参数的有效性;使用纯C基于对象编程时,调用对象的成员方法,不需要检查对象自身是否为NULL。
\myenddot
本手册假定读者已经学过《数据结构》\footnote{《数据结构》,严蔚敏等著,清华大学出版社,
\myurl{http://book.douban.com/subject/2024655/}},
《算法》\footnote{《Algorithms》,Robert Sedgewick, Addison-Wesley Professional, \myurl{http://book.douban.com/subject/4854123/}}
这两门课,熟练掌握C++或Java。
\subsubsection{Github地址}
本书是开源的,项目地址:\myurl{https://github.com/soulmachine/acm-cheat-sheet}
\subsubsection{北美求职微博群}
我和我的小伙伴们在这里:\myurl{http://q.weibo.com/1312378}