㈠ 全国电子设计大赛大赛又来临了 请问各位放大类题目需要准备哪些模块啊!
2011年全国电子设计竞赛赛题预测(权威版)
首先, 2011年题目应该与往年差异不大。无非是仪器类、电源类、放大器类、控制类等几大块。所以现在老师用以前的训练模式给学生打基础应该没什么问题。但有一下几点要注意:
因为推荐全国都有笔试考核,笔试多数以电子基础、模电知识为主,所以2011年年全国题目应该会继续在模电题目上下功夫,而数字电路,因为现在出题难度、芯片功能等原因,可能会不再考。
频谱仪、信号发生器、相位仪等相关题目都基本出过,所以如果仪器类继续出题目的话,可能还是在原先的基础上加强功能或者增加难度,但是这类型题目出的次数都比较多,不怀疑换类型的可能。仪器方面也要根据实验常用的仪器来判断哪些仪器在往年还没有涉及,而有可能当做新的方向来考核的,比如失真度仪什么的。
电源类好似是每年必出之题,所以建议不管出不出这类题,学生在平时锻炼的时候还是锻炼下为好,做几个电源,电流的、电压的,不出专门题目,说不准在其他题目上还能有所应用。再说,你就做个DDS信号源锻炼下,也浪费不了多长时间嘛。
放大器类题目前面几届也出过,上届专科组出过,本科组没有,预计今年会继续加入放大器类的题目。
2011年全国竞赛器件将会允许嵌入式、DSP、FPGA的相关芯片使用,所以学生可以根据自己的能力选择用嵌入式还是单片机参加相关的题目。因为嵌入式难度较大,多数学校都没有很好的开展嵌入式,所以直接出嵌入式题目的可能性不大。
控制类题目,前面几届多数采用小车车体,但是随着传感器及小车功能的扩展应用,题目也出的差不多了,再出好的题目有点难度,估计可能不会在以小车为载体,但是学生在学习控制电机等方面,小车还是一个不错的锻炼平台,即使不考,但是练习还是有必要的。
语音类题目,从前几届来看,几乎每届都有设计,虽然多数是作为扩展功能实现的,但是不可否认这是一个电子竞赛不可或缺的一个方面,所以2011年有可能会扶正,专门出一语音存储、多媒体或语音处理方面的题目。
建议现阶段同学们可以练习一下RC振荡器、相位测试仪,多功能存储示波器等基础性题目,争取到时可以做到“以不变应万变”。
以上是对2011年年竞赛的简单预测,仅做参考,相应学习、练习还是根据自己学校、小组的实力、学校的安排来进行,只要知识掌握全面、动手能力强,不管遇到哪方面题目,都能顺利解决。
最后,祝大家都能在在竞赛中取得优异成绩!
/*******************************************************/
补充意见:
1、低功耗、小信号测量与处理的题目可能也会有。
2、结合今年低能减耗的大形势,低功耗的题目确实是很可能出。
/*******************************************************/
全国大学生电子设计竞赛辽宁赛区会议”指导思想:
这次会议上除开展一些常规内容外,还宣布了一些“小道消息”,也是会议老师最想听的内容:
1、这次不提出最小系统的概念,(如以前AD\DA都需要自己设计电路,这次没有特殊要求),嵌入式、DSP、FPGA均可引入
2、PC机、笔记本不能出现在赛场
3、基础测试计入总分(参评国家奖时,每组派一个学生参加笔试,笔试成绩计入总分)
4、这次提出性价比,性价比占5~10分
5、功耗分析,占的分数很重(老师多次强调,老师说也是决定国家一等奖作品的重点),老师建议大家在做设计时将能测功耗的点留出来,事先要有准备;
6、可以采用小系统板,电路中必须有学生自己设计的电路部分,不能使用评估板,大系统板;
7、减少设计报告的评分比重。
版主言:竞赛指导思想越来越明确了!大家加油啊!
/*******************************************************/
由于资深竞赛专家对竞赛趋势做了预测:
1。电子竞赛题目来看,应该还是会照顾到电子相关专业,类型不会有太大变化,但随消费电子的普及,题目里或获奖作品里会有消费电子功能的身影,
2。创新是电子行业发展的动力,今年题目会更加鼓励创新,题目发挥部分自由度更大,最后获奖作品里会百花齐放,更“多媒体”
3。随着多媒体的普及,今年带有显示部分的题目,用彩屏获奖机会、比例会加大,说不定图像传感器今年会有使用
4。随着嵌入式的普及,用32位参赛的门槛的降低,今年获奖作品不乏32位系统
5。随着soc技术的发展,集成度越来越高,数字电路搭建会少,模拟的不会减少,集成度高的小系统板不会受限制,可能会得到更多应用
6。从以往目前竞赛成绩好的学校来看,基本是动手早、学校重视、老师负责,现在都在开始动作,陆续搞选拔等基础培训工作。
7。小车题目很经典,对检测控制专业是很好的题目。
专家还提出建议:
1。建议老师提早动手,选拔优秀人才,sowt分析自己的优劣势,明确今年竞赛的参赛题目方向、拿奖目标。
2。近期通过单片机板培养学生竞赛的基本功,通过兴趣产品、电子竞赛礼包,提重点在c语言编成、单片机开发调试能力。
3。中期玩转角度传感器、指南针、超声波、红外等周边产品,有能力要冲击全国冠军的队伍,学一下32位,争取在扩展题目内容里多拿分。
2011年电子竞赛突击宝典
有许多认识我的同学经常会问我一些关于怎样参加电子竞赛怎样准备,他们打算参加全国电子竞赛,但又感到很迷茫,不知道该从何做起 ,该怎么准备,今天我以个人的看法和我的经验所知,也收集补充了这些网上的建议,希望能给大家做个参考(2年一次每次都有新的变化,本文章仅限于2011年电子竞赛参考)
1、对竞赛满怀热情
很清楚,热情是保持一个人对一件事物的热忠程度,它可以引导你,为你注入强大的动力。相信很多人参加国赛纯粹是为了将来找工作时可以在自己的简历上填上这个经历,这就不是一种热情了。因为对他们来说参加竞赛才是首要的,至于能否拿奖次之,也就不注重竞赛的过程。这我不是很提倡,我提倡的是用热情参赛,但我并不提倡三分钟的热情。其次,我看到好多人都站在考研和参赛的抉择口,在此我额外补充一点。我觉得这种情况最好要不要迟疑太久,要明确自己的方向,当机立断,免得两头分心,吃力又不合算(毕竟一个人精力有限)。正所谓无,好的开始就是成功的一半。
2、关注和收集国赛资料,了解规则
如果你有意参加的话,平时就要多关注全国电子竞赛信息,收集一些往年竞赛资料,了解评分规则,这些都是很有必要的。
3、团队的选择。
我在团队这方面也没什么高见,相信大家这以后的准备过程中会组建起来自己的团队。一个能在全国大学生电子竞赛中得奖的团队必须具备这么几个特征: 绝对喜欢电子开发。在软件、硬件、论文写作中各有所长。你想想3个只会C语言的家伙合一起能干什么。这样的团队还不如大家一起看看《越狱》、《24小时》实在。选好团队后就要确定团队核心人物。大家一定都能想得到,一旦进入备战阶段,组员间的探讨是必然的,各抒己见固然好,但往往也比较容易起争执。这时如果有个核心人物,他的话在非常时期大家必须绝对服从,他说了算。
4、正确认识自己的团队优势资源,明确分工。
要想获得成功,就必须认清自己团队的优势,充分调用组员中的优势资源,比如:某个组员在编程方面有优势,那么就应该合理分配编程工作给他,这样大家分工也就相对明确了,也都能充分发挥自己的所长,将团对协作的力量发挥到最大。
5、基本技能的准备
磨刀不误砍材功,根基不牢就不要往上爬,爬得越高,摔得越重。 这个方面,你需要连接常用的电路,如高增益放大电路,跟随电路,滤波电路的设计,学习protel制图软件,会划电路原理图,会PCB制板。在准备期间一定要学会用万用板焊接电路,或者用三氯化铁腐蚀电路,这个效果非常好。在正式比赛前,一定要于团队在4天内练习做一个完整的电子系统,时间安排在8月初最好(推荐凌阳大学计划赛前热身套件),不要以为你能做好各个模块,但是联机调试你就不一定成功,总是会缺点什么,事实证明,大部分的竞赛队失败就失败在最后的联机。
6、选对核心器件是关键
(单片机)选型 CPU是电子设计竞赛的核心器件。现在的微处理器很多,如 比较古老的8051单片机,AVR单片机,PIC单片机,MSP430单片机。现在也出了很多新型单片机,这类单片机含有很多的扩充资源,如大量的FLASH(这些FLASH对LCD字库很有帮助)、中速AD,D\A、多定时器、PWM,语音功能等等,这些资源会给开发带来很多的方便。从个人经验看,竞赛一定要用自己擅长的单片机,但根据题目的不同,不同的单片机实现起来难度也不一样。如果准备时间短,没有很丰富的单片机开发经验又对自己水平不是太自信的朋友,可以学习一下凌阳的61板,快速入门和丰富权威的自学资料能达到事半功倍的效果,随着时代的变化,电子产品的更新也是日新月异的,现在很多人都喜欢上了嵌入式和DSP。根据09年竞赛的精神利用嵌入式与DSP参加电子竞赛也会逐渐提到日程上来,如果做的是关于高速数据处理的的题目,比如高速数据采集,高速数据传输等等,这样这两个东西会有用武之地。
7、基本模块的准备
参加电子设计竞赛,离不开一些基本模块。像LED,LCD子电路,子程序。(这点凌阳的61板做的很好,有很多现成的标准函数可以调用)AD,DA电路,搞控制的总得选好步进电机的型号,驱动电路,驱动程序吧,那搞无线的应该准备什么呢?自己去想吧!有一个一等奖选手告诉过我,他说“在竞赛前我就知道我会得奖,因为我把该准备的东西都准备了,而且在比赛前几天都梦到了比赛题目",他说得有点夸张,但是也很可信,足以证明这个准备对整个比赛有举足轻重的作用。
8、专注自己的强项
下面对全国大学生电子设计竞赛谈几点全国大学生电子设计竞赛的试题:其实每年的竞赛试题都有很多相似的地方,控制类的如 简单的工业控制、小车;传统题目如数据调理、数据采集,无线传输系统;电源设计;简单仪器、仪表设计(每年必要一题)如2005年的简易频谱分析仪,2003年的简易逻辑分析器。建议为了夺奖的朋友专注自己的强项。
9、备战前要调理好身体
这也是很容易忽略的一点。4天3夜是个什么概念,我想大家都要清楚点,所谓身体是革命的本钱。既然下定决心参赛,就要调理好身体,以最佳的状态来迎接挑战。否则,千载难逢的机会就可能擦肩而过,留下的就将会是遗憾。
10、要有善始善终,持之以恒的决心
竞赛不仅仅是技能的竞争,更是良好心态的比拼。比赛期间,肯定都会遇到这样那样的问题,如果没有善始善终,持之以恒的决心,三天打鱼,两天晒网,是走不到最后的。要切切实实按照制定好的进程走,该做哪项任务,就要尽量克服一切困难做完,该今天做的,就不能留到明天。
具备以上条件后,你还应该做的就是自信了。
11、会做也要会表达
一个获得一等奖的团队,不用问这里面肯定有一个好的队长,一个好的指导老师,还有一个很关键的角色,文笔不错善于表达的人物。一个团队的设计理念和思想需要通过他公布于众,让评委团了解和认同你们的观点,论文的书写也是考察写作基本功的关键要素,切记现在不是酒香不怕巷子深的年代了,因为可以选择的对象太多,要学会主动出击。所以说一个好的团队是成功的一半!
㈡ 学习数据结构,有哪些值得推荐的好书
在微信高校专业集里面粘贴
入门
1.《啊哈!算法》
2.《算法设计与分析基础》
3.《算法引论:一种创造性方法》
4.原书名:Introction to Algorithms
中文名:算法导论
5.数据结构与算法分析:C语言描述(原书第2版)
进阶
1.原书名:The Design and Analysis of Computer Algorithms
中文名:算法设计与分析
作者:Aho,Hopcroft,Ullman
2.原书名:Algorithms Design Techniques and Analysis
中文名:算法设计技巧与分析
作者:M.H.Alsuwaiyel
3.中文名:算法与数据结构
作者:傅清祥 王晓东
程序设计竞赛
1.原书名:Introction to Algorithms
中文名:算法导论
作者:Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein
2.原书名:Introction to The Design & Analysis of Algorithms
中文名:算法设计与分析基础
作者:Anany Levitin
4.算法竞赛 | 信息学奥赛一本通
5.算法竞赛 | 算法竞赛进阶指南
㈢ c语言的学习方法
得从点点滴滴的东西做起。。。本人也是学这个的,有些体会,。
《C程序设计》的内容很丰富,按照我们现在的教学大纲,主要内容是基础知识、四种结构的的程序设计、函数与数组的应用和一些简单的算法。在学习时,同学们应该把主要精力放在这些部分,通过实践(练习和上机调试等熟练掌握。当然,在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们同学最欠缺,大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃这样三个过程,我反问,这节课你听过课吗?回答又是没有,根本就没听过课,怎么说自己听不懂呢?相应的根本就没学习,又谈何学的好?
学习C语言始终要记住“曙光在前头”和“千金难买回头看”,“千金难买回头看”是学习知识的重要方法,就是说,学习后面的知识,不要忘了回头弄清遗留下的问题和加深理解前面的知识,这是我们学生最不易做到的,然而却又是最重要的。比如:在C语言中最典型的是关于结构化程序设计构思,不管是那种教材,一开始就强调这种方法,这时也许你不能充分体会,但是学到函数时,再回头来仔细体会,温故知新,理解它就没有那么难了。学习C语言就是要经过几个反复,才能前后贯穿,积累应该掌握的C知识。
那么,我们如何学好《C程序设计》呢?
一.学好C语言的运算符和运算顺序
这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,只要我们对此合理进行分类,找出它们与我们在数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2、3级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。下面我们通过几个例子来说明:
(1) 5*8/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10 = 0;
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
对于c=++a*b来说,按表中所列顺序,+ +先执行,*后执行,所以+ + a执行后,a的值为4,由于+ +为前置运算,所以a的值4参与运算,C的值计算式为4*5=20而不是3*5=15了;而对于d=a++*b来说,由于a + +为后置运算,所以a值为4参与运算,使得d的值仍为20,而a参与运算后其值加1,值为5。 这个例子执行后,a的值为5,b的值为5,c的值为20,d的值也是20;
(3)(a = 3,b = 5,b+ = a,c = b* 5)
例子中的“,”是逗号结合运算,上式称为逗号表达式,自左向右结合,最后一个表达式的结果值就是逗号表达式的结果,所以上面的逗号表达式结果为40,a的值为3,b的值为8,c的值为40。
(4)a=5;b=6;c=a>b?a:b;
例中的a>b?a:b是一个三目运算,它的功能是先做关系运算a>b部分,若结果为真,则取问号后a的值,否则取冒号后b的值,因此c的值应该为6,这个运算可以用来代替if…else…语句的简单应用。
二.学好C语言的四种程序结构
(1)顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如;a = 3,b = 5,现交换a,b的值,这个问题就好象交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为: c = a; a = b; b = c; 执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b = c; 则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。 顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。
(2) 分支结构
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
学习分支结构不要被分支嵌套所迷惑,只要正确绘制出流程图,弄清各分支所要执行的功能,嵌套结构也就不难了。嵌套只不过是分支中又包括分支语句而已,不是新知识,只要对双分支的理解清楚,分支嵌套是不难的。下面我介绍几种基本的分支结构。
①if(条件)
{
分支体
}
这种分支结构中的分支体可以是一条语句,此时“{ }”可以省略,也可以是多条语句即复合语句。它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。如:要计算x的绝对值,根据绝对值定义,我们知道,当x>=0时,其绝对值不变,而x<0时其绝对值是为x的反号,因此程序段为:if(x<0) x=-x;
②if(条件)
{分支1}
else
{分支2}
这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。如:求ax^2+bx+c=0的根
分析:因为当b^2-4ac>=0时,方程有两个实根,否则(b^2-4ac<0)有两个共轭复根。其程序段如下:
d=b*b-4*a*c;
if(d>=0)
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf(“x1=%8.4f+%8.4fi\n”r, i);
printf(“x2=%8.4f-%8.4fi\n”r,i)
}
③嵌套分支语句:其语句格式为:
if(条件1) {分支1};
else if(条件2) {分支2}
else if(条件3) {分支3}
……
else if(条件n) {分支n}
else {分支n+1}
嵌套分支语句虽可解决多个入口和出口的问题,但超过3重嵌套后,语句结构变得非常复杂,对于程序的阅读和理解都极为不便,建议嵌套在3重以内,超过3重可以用下面的语句。
④switch开关语句:该语句也是多分支选择语句,到底执行哪一块,取决于开关设置,也就是表达式的值与常量表达式相匹配的那一路,它不同if…else 语句,它的所有分支都是并列的,程序执行时,由第一分支开始查找,如果相匹配,执行其后的块,接着执行第2分支,第3分支……的块,直到遇到break语句;如果不匹配,查找下一个分支是否匹配。这个语句在应用时要特别注意开关条件的合理设置以及break语句的合理应用。
(3)循环结构:
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误,在学习中我们主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
在学完这三个循环后,应明确它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。
顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,我们均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。
(4)模块化程序结构
C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。 因些,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。
三.掌握一些简单的算法
编程其实一大部分工作就是分析问题,找到解决问题的方法,再以相应的编程语言写出代码。这就要求掌握算法,根据我们的《C程序设计》教学大纲中,只要求我们掌握一些简单的算法,在掌握这些基本算法后,要完成对问题的分析就容易了。如两个数的交换、三个数的比较、选择法排序和冒泡法排序,这就要求我们要清楚这些算法的内在含义,其中选择法排序和冒泡法排序稍难,但只要明白排序的具体过程,对代码的理解就不难了。如用选择法对10个不同整数排序(从小到大),选择法排序思路:设有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作;若a[2]~a[10] 中有一个比a[1]小,则将其中最大的一个(假设为a)与a[1]交换,此时a[1]中存放了10个中最小的数。第二轮将a[2]与a[3]~a[10]比较,将剩下9个数中的最小者a与a[2]交换,此时a[2] 中存放的10个数中第2小的数;依此类推,共进行9轮比较,a[1]到a[10]就已按从小到大的顺序存放。即每一轮都找出剩下数中的最小一个,代码如下:
for(i=1;i<=9;i++)
for(j=i+1;j<=10;j++)
if(a>a[j]
{temp=a;
a=a[j];
a[j]=temp;
}
结语:当我们把握好上述几方面后,只要你能克服畏难、厌学、上课能专心听讲,做好练习与上机调试,其实C并不难学。
㈣ 《算法竞赛宝典》适合C++编程吗
适合竞赛,不适合程序员。建议你竞赛看看刘汝佳的书,程序员看看cpp primer
㈤ ACM需要那些方面的知识
备战ACM资料
一:知识点
数据结构:
1,单,双链表及循环链表
2,树的表示与存储,二叉树(概念,遍历)二叉树的
应用(二叉排序树,判定树,博弈树,解答树等)
3,文件操作(从文本文件中读入数据并输出到文本文
件中)
4,图(基本概念,存储结构,图的运算)
数学知识
1,离散数学知识的应用(如排列组合、简单的图论,数
理逻辑)
2,数论知识
3,线性代数
4,组合代数
5,计算几何
二 算法
1,排序算法(冒抛法,插入排序,合并排序,快速排
序,堆排序)
2,查找(顺序查找,二分发)
3,回溯算法
4,递归算法
5,分治算法
6,模拟法
7,贪心法
8,简单搜索算法(深度优先,广度优先),搜索中的
剪枝,A*算法
9,动态规划的思想及基本算法
10,高精度运算
三、ACM竞赛的题型分析
竞赛的程序设计一般只有16种类型,它们分别是:
Dynamic Programming (动态规划)
Greedy (贪心算法)
Complete Search (穷举搜索)
Flood Fill (不知该如何翻译)
Shortest Path (最短路径)
Recursive Search Techniques (回溯搜索技术)
Minimum Spanning Tree (最小生成树)
Knapsack (背包问题)
Computational Geometry (计算几何学)
Network Flow (网络流)
Eulerian Path (欧拉回路)
Two-Dimensional Convex Hull (不知如何翻译)
BigNums (大数问题)
Heuristic Search (启发式搜索)
Approximate Search (近似搜索)
Ad Hoc Problems (杂题)
四 ACM竞赛参考书
《实用算法的分析与程序设计》 (吴文虎,王建德着,电子工业出版社,竞赛类的黑宝书)
《青少年国际和全国信息学(计算机)奥林匹克竞赛指导)――组合数学的算法
和程序设计》(吴文虎,王建德着,清华大学出版社,参加竞赛组合数学必学)
《计算机算法设计与分析》 (王晓东编着,最好的数据结构教材)
《数据结构与算法》 (傅清祥,王晓东编着,我所见过的最好的算法教材)
《信息学奥林匹克竞赛指导――1997-1998竞赛试题解析》(吴文虎,王建德着,清华大学出版社)
《计算机程序设计技巧》 D.E.Kruth着,算法书中最着名的《葵花宝典》,大师的作品,难度大)
《计算几何》周陪德着
《ACM国际大学生程序设计竞赛试题与解析(一)》 (吴文虎着,清华大学出版社)
《数学建模竞赛培训教材》 共三本 叶其孝主编
《数学模型》 第二版 姜启源
《随机规划》
《模糊数学》
《数学建模入门》 徐全智
《计算机算法设计与分析》 国防科大
五 常见的几个网上题库
常用网站:
1)信息学初学者之家:
(2)大榕树编程世界:
(3)中国教育曙光网:
(4)福建信息学奥林匹克:
(5)第20届全国青少年信息学奥林匹克竞赛:
(6)第15届国际青少年信息学奥林匹克竞赛:
(7)全美计算机奥林匹克竞赛:
(8)美国信息学奥林匹克竞赛官方网站:
(9)俄罗斯Ural州立大学:
(10)西班牙Valladolid大学:
(11)ACM-ICPC:
(12)北京大学:
(13)浙江大学:
(14)IOI:
(15)2003年江苏省信息学奥林匹克竞赛夏令营:
(16)
(17)
(18)
(19)
(20) colin_fox/colin_fox
五 如何备战ACM/ICPC
1,个人准备(算法书,习题集,网上做题和讨论)
2,1000题=亚洲冠军=世界决赛
3,做好资料收集和整理工作
㈥ 学习c语言看什么书好
最近很多人都在问如何学习编程。我觉得学习编程最重要的是入门,如果你入门的时候有一个好的方法和思路,打下比较扎实的基础,对今后的编程工作是很有益处的。即使在学习新的编程语言也无所谓,因为它们有很多相通之处,可以相互借鉴。
我认为可以先学习一下pascal,这个语言比较严谨,适合初学者。pascal它被称为教学语言,结构严谨,不像C语言那么灵活,易于理解和学习。
然后可以继续学习C语言,这个语言比较灵活。有了pascal的基础,在进行C语言编程就不会因为C语言的灵活而有问题
。后面的就可以学习VC什么的了。
C语言的书推荐谭浩强的,比较好。
我当时学习pascal和C语言的时候是将书后的习题都做了一遍,感觉效果很好。
当然了,学习什么语言也要看你具体准备从事什么行业。例如你要进行嵌入式开发,C就是很好的选择,如果是Windows开发,那么VC就不错。还有数据库方面的开发、网络开发等等。不同的语言适合不同的方面。要看自己的选择的,呵呵
。
还有很多人说自己的基础很差,甚至中学毕业什么的。其实这个并不重要,比较说英语,在计算机语言里所用到的单词量很少,而且都是常用词,经常使用就记住了。当然,如果你要看原文资料或者帮助的话,专业词汇比较多,不过在金山词霸的帮助下,经常看,也是没什么大的问题的。至于数学什么的,其实数学只是培养你一个逻辑思维能力,在初学编程的时候影响不是很大。况且,作为一个基础编程人员来说,上面还有系统分析师、项目经理,他们会把需求分析、概要设计和详细设计做好的,你只要按照文档写代码就OK了。不过,要上更上一步的话,其他基础知识就非常重要了,毕竟你不能写一辈子代码。
在你学习好C语言以后,个人建议好好学习一下数据结构和软件工程。这两门对你的水平提高都是很有帮助的。特别是软件工程,它能够使你按照科学的工程方法进行软件开发,对今后的发展很有好处。
只是一家之言,有不到之处,还望见谅
㈦ acm初学者要准备什么 看什么书啊
刚刚接触信息学领域的同学往往存在很多困惑,不知道从何入手学习,在这篇文章里,我希望能将自己不多的经验与大家分享,希望对各位有所帮助。
一、语言是最重要的基本功
无论侧重于什么方面,只要是通过计算机程序去最终实现的竞赛,语言都是大家要过的第一道关。亚洲赛区的比赛支持的语言包括C/C++与JAVA。笔者首先说说JAVA,众所周知,作为面向对象的王牌语言,JAVA在大型工程的组织与安全性方面有着自己独特的优势,但是对于信息学比赛的具体场合,JAVA则显得不那么合适,它对于输入输出流的操作相比于C++要繁杂很多,更为重要的是JAVA程序的运行速度要比C++慢10倍以上,而竞赛中对于JAVA程序的运行时限却往往得不到同等比例的放宽,这无疑对算法设计提出了更高的要求,是相当不利的。其实,笔者并不主张大家在这种场合过多地运用面向对象的程序设计思维,因为对于小程序来说这不旦需要花费更多的时间去编写代码,也会降低程序的执行效率。
接着说C和C++。许多现在参加讲座的同学还在上大一,C的基础知识刚刚学完,还没有接触过C++,其实在赛场上使用纯C的选手还是大有人在的,它们主要是看重了纯C在效率上的优势,所以这部分同学如果时间有限,并不需要急着去学习新的语言,只要提高了自己在算法设计上的造诣,纯C一样能发挥巨大的威力。
而C++相对于C,在输入输出流上的封装大大方便了我们的操作,同时降低了出错的可能性,并且能够很好地实现标准流与文件流的切换,方便了调试的工作。如果有些同学比较在意这点,可以尝试C和C++的混编,毕竟仅仅学习C++的流操作还是不花什么时间的。
C++的另一个支持来源于标准模版库(STL),库中提供的对于基本数据结构的统一接口操作和基本算法的实现可以缩减我们编写代码的长度,这可以节省一些时间。但是,与此相对的,使用STL要在效率上做出一些牺牲,对于输入规模很大的题目,有时候必须放弃STL,这意味着我们不能存在“有了STL就可以不去管基本算法的实现”的想法;另外,熟练和恰当地使用STL必须经过一定时间的积累,准确地了解各种操作的时间复杂度,切忌对STL中不熟悉的部分滥用,因为这其中蕴涵着许多初学者不易发现的陷阱。
通过以上的分析,我们可以看出仅就信息学竞赛而言,对语言的掌握并不要求十分全面,但是对于经常用到的部分,必须十分熟练,不允许有半点不清楚的地方,下面我举个真实的例子来说明这个道理——即使是一点很细微的语言障碍,都有可能酿成错误:
在去年清华的赛区上,有一个队在做F题的时候使用了cout和printf的混合输出,由于一个带缓冲一个不带,所以输出一长就混乱了。只是因为当时judge team中负责F题的人眼睛尖,看出答案没错只是顺序不对(答案有一页多,是所有题目中最长的一个输出),又看了看程序发现只是输出问题就给了个Presentation error(格式错)。如果审题的人不是这样而是直接给一个 Wrong Answer,相信这个队是很难查到自己错在什么地方的。
现在我们转入第二个方面的讨论,基础学科知识的积累。
二、以数学为主的基础知识十分重要
虽然被定性为程序设计竞赛,但是参赛选手所遇到的问题更多的是没有解决问题的思路,而不是有了思路却死活不能实现,这就是平时积累的基础知识不够。今年World Final的总冠军是波兰华沙大学,其成员出自于数学系而非计算机系,这就是一个鲜活的例子。竞赛中对于基础学科的涉及主要集中于数学,此外对于物理、电路等等也可能有一定应用,但是不多。因此,大一的同学也不必为自己还没学数据结构而感到不知从何入手提高,把数学捡起来吧!下面我来谈谈在竞赛中应用的数学的主要分支。
1、离散数学——作为计算机学科的基础,离散数学是竞赛中涉及最多的数学分支,其重中之重又在于图论和组合数学,尤其是图论。
图论之所以运用最多是因为它的变化最多,而且可以轻易地结合基本数据结构和许多算法的基本思想,较多用到的知识包括连通性判断、DFS和BFS,关节点和关键路径、欧拉回路、最小生成树、最短路径、二部图匹配和网络流等等。虽然这部分的比重很大,但是往往也是竞赛中的难题所在,如果有初学者对于这部分的某些具体内容暂时感到力不从心,也不必着急,可以慢慢积累。
竞赛中设计的组合计数问题大都需要用组合数学来解决,组合数学中的知识相比于图论要简单一些,很多知识对于小学上过奥校的同学来说已经十分熟悉,但是也有一些部分需要先对代数结构中的群论有初步了解才能进行学习。组合数学在竞赛中很少以难题的形式出现,但是如果积累不够,任何一道这方面的题目却都有可能成为难题。
2、数论——以素数判断和同余为模型构造出来的题目往往需要较多的数论知识来解决,这部分在竞赛中的比重并不大,但只要来上一道,也足以使知识不足的人冥思苦想上一阵时间。素数判断和同余最常见的是在以密码学为背景的题目中出现,在运用密码学常识确定大概的过程之后,核心算法往往要涉及数论的内容。
3、计算几何——计算几何相比于其它部分来说是比较独立的,就是说它和其它的知识点很少有过多的结合,较常用到的部分包括——线段相交的判断、多边形面积的计算、内点外点的判断、凸包等等。计算几何的题目难度不会很大,但也永远不会成为最弱的题。
4、线性代数——对线性代数的应用都是围绕矩阵展开的,一些表面上是模拟的题目往往可以借助于矩阵来找到更好的算法。
5、概率论——竞赛是以黑箱来判卷的,这就是说你几乎不能动使用概率算法的念头,但这也并不是说概率就没有用。关于这一点,只有通过一定的练习才能体会。
6、初等数学与解析几何——这主要就是中学的知识了,用的不多,但是至少比高等数学多,我觉得熟悉一下数学手册上的相关内容,至少要知道在哪儿能查到,还是必要的。
7、高等数学——纯粹运用高等数学来解决的题目我接触的只有一道,但是一些题目的叙述背景往往需要和这部分有一定联系,掌握得牢固一些总归没有坏处。
以上就是竞赛所涉及的数学领域,可以说范围是相当广的。我认识的许多人去搞信息学的竞赛就是为了逼着自己多学一点数学,因为数学是一切一切的基础。
三、数据结构与算法是真正的核心
虽然数学十分十分重要,但是如果让三个只会数学的人参加比赛,我相信多数情况下会比三个只会数据结构与算法的人得到更为悲惨的结局。
先说说数据结构。掌握队列、堆栈和图的基本表达与操作是必需的,至于树,我个人觉得需要建树的问题有但是并不多。(但是树往往是很重要的分析工具)除此之外,排序和查找并不需要对所有方式都能很熟练的掌握,但你必须保证自己对于各种情况都有一个在时间复杂度上满足最低要求的解决方案。说到时间复杂度,就又该说说哈希表了,竞赛时对时间的限制远远多于对空间的限制,这要求大家尽快掌握“以空间换时间”的原则策略,能用哈希表来存储的数据一定不要到时候再去查找,如果实在不能建哈希表,再看看能否建二叉查找树等等——这都是争取时间的策略,掌握这些技巧需要大家对数据结构尤其是算法复杂度有比较全面的理性和感性认识。
接着说说算法。算法中最基本和常用的是搜索,主要是回溯和分支限界法的使用。这里要说的是,有些初学者在学习这些搜索基本算法是不太注意剪枝,这是十分不可取的,因为所有搜索的题目给你的测试用例都不会有很大的规模,你往往察觉不出程序运行的时间问题,但是真正的测试数据一定能过滤出那些没有剪枝的算法。实际上参赛选手基本上都会使用常用的搜索算法,题目的区分度往往就是建立在诸如剪枝之类的优化上了。
常用算法中的另一类是以“相似或相同子问题”为核心的,包括递推、递归、贪心法和动态规划。这其中比较难于掌握的就是动态规划,如何抽象出重复的子问题是很多题目的难点所在,笔者建议初学者仔细理解图论中一些以动态规划为基本思想所建立起来的基本算法(比如Floyd-Warshall算法),并且多阅读一些定理的证明,这虽然不能有什么直接的帮助,但是长期坚持就会对思维很有帮助。
四、团队配合
通过以上的介绍大家也可以看出,信息学竞赛对于知识面覆盖的非常广,想凭一己之力全部消化这些东西实在是相当困难的,这就要求我们尽可能地发挥团队协作的精神。同组成员之间的熟练配合和默契的形成需要时间,具体的情况因成员的组成不同而不同,这里我就不再多说了。
五、练习、练习、再练习
知识的积累固然重要,但是信息学终究不是看出来的,而是练出来的,这是多少前人最深的一点体会,只有通过具体题目的分析和实践,才能真正掌握数学的使用和算法的应用,并在不断的练习中增加编程经验和技巧,提高对时间复杂度的感性认识,优化时间的分配,加强团队的配合。总之,在这里光有纸上谈兵是绝对不行的,必须要通过实战来锻炼自己。
大家一定要问,我们去哪里找题做,又如何检验程序是否正确呢?这大可不必担心,现在已经有了很多网上做题的站点,这些站点提供了大量的题库并支持在线判卷,你只需要把程序源码提交上去,马上就可以知道自己的程序是否正确,运行所使用的时间以及消耗的内存等等状况。下面我给大家推荐几个站点,笔者不建议大家在所有这些站点上做题,选择一个就可以了,因为每个站点的题都有一定的难易比例,系统地做一套题库可以使你对各种难度、各种类型的题都有所认识。
1、Ural:
Ural是中国学生对俄罗斯的Ural州立大学的简称 ,那里设立了一个Ural Online Problem Set,并且支持Online Judge。Ural的不少题目算法性和趣闻性都很强,得到了国内广大学生的厚爱。根据“信息学初学者之家”网站的统计,Ural的题目类型大概呈如下的分布:
题型
搜索
动态规划
贪心
构造
图论
计算几何
纯数学问题
数据结构
其它
所占比例
约10%
约15%
约5%
约5%
约10%
约5%
约20%
约5%
约25%
这和实际比赛中的题型分布也是大体相当的。有兴趣的朋友可以去看看。
2、UVA:
UVA代表西班牙Valladolid大学(University de Valladolid)。该大学有一个那里设立了一个PROBLEM SET ARCHIVE with ONLINE JUDGE ,并且支持ONLINE JUDGE,形式和Ural大学的题库类似。不过和Ural不同的是,UVA题目多的多,而且比较杂,而且有些题目的测试数据比较刁钻。这使得刚到那里做题的朋友往往感觉到无所适从,要么难以找到合适的题目,要么Wrong Answer了很多次以后仍然不知道错在那里。 如果说做Ural题目主要是为了训练算法,那么UVA题目可以训练全方位的基本功和一些必要的编程素质。UVA和许多世界知名大学联合办有同步网上比赛,因此那里强人无数,不过你先要使自己具有听懂他们在说什么的素质:)
3、ZOJ:
ZOJ是浙江大学建立的ONLINE JUDGE,是中国大学建立的第一个同类站点,也是最好和人气最高的一个,笔者和许多班里的同学就是在这里练习。ZOJ虽然也定位为一个英文网站,但是这里的中国学生比较多,因此让人觉得很亲切。这里目前有500多道题目,难易分配适中,且涵盖了各大洲的题目类型并配有索引,除此之外,ZOJ的JUDGE系统是几个网站中表现得比较好的一个,很少出现Wrong Answer和Presentation error混淆的情况。这里每月也办有一次网上比赛,只要是注册的用户都可以参加。
说起中国的ONLINE JUDGE,去年才开始参加ACM竞赛的北京大学现在也建立了自己的提交系统;而我们学校也是去年开始参加比赛,现在也有可能推出自己的提交系统,如果能够做成,到时候大家就可以去上面做题了。同类网站的飞速发展标志着有越来越多的同学有兴趣进入信息学的领域探索,这是一件好事,同时也意味着更激烈的竞争。
看看这篇文章对你有什么帮助!我也是ACM初学者!
㈧ 学数据结构(C++)有什么值得推荐的好书
远标老师以前推荐我看《数据结构》可以拿来入门。然后可以根据自己的实际情况来安排怎么样学习数据结构。很多人是看一遍书,然后在遇到算法之后再去实现它。在这里列出一些我知道的算法书籍,以供参考。(我也只看过算法导论,编程之美)
1. CLRS 算法导论
算法网络全书,只做了前面十几章的习题,便感觉受益无穷。
2. Algorithms 算法概论
短小精悍,别据一格,准经典之作。一个坏消息: 同算法导论,该书没有习题答案。好消息:习题很经典,难度也适中,只需花点点时间自己也都能做出来。不好也不坏的消息:我正在写习题的答案,已完成前三章,还剩九章约二百道题,顺利的话二个月之后发布。另有中文版名《算法概论》,我没看过,不知道翻译得怎么样。如果有心的话,还是尽量看原版吧,其实看原版与看中文版花费时间不会相差很大,因为大部分时间其实都花费在做习题上了。
dr. dobb's essential books on Algorithm and daba structure
3. Algorithm Design 算法设计
很经典的一本书,很久之前看的,遗憾的是现在除了就记得它很经典之外其它都忘光了。
4. SICP 计算机程序的构造和解释
六星之书无需多言,虽然这不是一本讲算法的书,但看完此书有助于你更深入的理解什么是递归。我一直很强调习题,看完此书后你至少应该做完前四章的太部分习题。否则那是你的遗憾,也是作者的遗憾。
5. Concrete Mathematics 具体数学
有人说看TAOCP之前应该先弄清楚这本书的内容,要真是如此的话那我恐怕是看不到TAOCP了。零零碎碎的看了一大半,很多东西都没有时间来好好消化。如果你是刚进大学不久的本科生,有着大把的可自由支配时间,那你幸运又幸福了,花上几个月时间好好的读一下此书吧,收获绝对大于你的期望值。
6. Introction to The Design and Analysis of Algorithms 算法设计与分析基础
很有趣的一本算法书,有许多在别的书上找不到的趣题,看完此书绝对能让你大开眼界,实在是一本居家旅行,面试装逼的必备佳作。
7. 编程之美--微软技术面试心得
虽说是一本面试书,但如果把前面十几页扯掉的话,我更愿意把它看作是一本讲解题思维的算法小品。在书中,作者通常是给出一个平常解法,然后再一次又一次的优化改进,你可以很清楚的看到基本的算法设计思想是如何得到运用以解决实际问题的。如果你已经有了一些算法的基础,看完本书应该能使你的算法应用能力得到一定的提高。另外,本书生动有趣,也同样适合于初学者。
8. Fundamentals of Algorithmics 算法基础
也是很久之前在学校图书馆借来看的,内容记不太清楚了,只隐约记得此书的动态规划章节犹为出彩。应该是很经典的一本书,个人以为足以和算法导论等所谓当世经典平分秋色,但是怎么好像被人提到的不多,或许是我孤陋寡闻了。
9. How to solve it 怎样解题
二十世纪最伟大的数学思想家之一波利亚的力作,讲一般性的解题方法:怎么认识问题,怎么转换问题,怎么解决问题,如何在问题中得到启发,如何找到一个通往答案的方向。
10. Programming interviews exposed 程序员面试攻略
一本消遣之作。个人以为要比国内的某“XXX面试宝典”纯粹一些,至少也有一些启发性的内容,而不单单是面试题解库。
11. Programming Pearls 编程珠玑
学习算法不仅需要像Alogrithms,算法导论这样的重量级的内功心法,像《编程之美》、《编程珠玑》这样的轻量级的轻功身法也必不可少。前些年网上不是很流行像“给你10亿个数,找到最大的n个”或者“给你10亿个数,找出现次数最多的那个数”之类的网络面试题吗?看了此书你就知道怎么解决了。相比于《编程之美》来说,本书中的示例技巧性略低一些,但是也更有实际应用价值一些。
12. 算法艺术与信息学竞赛
如果算法导论是九阳神功,那这本无疑就是九阴真经。本书是专为参加一些诸如ACM之类程序设计比赛的同学而写的,江湖人称“黑书”。里面讲的都是一些在编程比赛中常用的算法、数据结构,以及一些数论和计算几何等。我虽然并不搞竞赛,但也从此书中受益颇多。
13. An Introction to Probability Theory and Its Applications
准备看的,现在才发现概率论有多么重要,可惜本科的时候没有好好学。前不久一个同学问我个问题,我半天弄了一个程序给他,他说:这里就不是相关系数么,Excel一下就完事!我晕,我还真不知道那就是相关系数。
14. Numerical Analysis
这本的作者是Richard L. Burden,J. Douglas Faires
数值分析,讨论各种数值算法,比如插值、拟合、积分、微分方程的求解、线性和非线性方程组求解等。准备详细看。
15. TAOCP 计算机程序设计艺术
传说中的TAOCP,说的人多,看的人少。TAOCP四卷堪称是算法藏经阁中的易筋经或者是少林七十二绝技。天下武学,尽出少林,天下算法,尽出TAOCP也。这点你可以顺便翻开一本算法书看看他的引用文献就知道了。我只读了第四卷的部分章节,前三卷暂时还没敢看,还在读书计划表中被无限期搁置。
㈨ C语言进阶学习有哪些经典书籍
《C语言程序设计》
作者:郭有强 编
出 版 社:清华大学出版社
评价:书很利索,该有的都有,如果你还没有一本满意的C语言课本,买它没错。(也可以阅读外国的经典C语言书籍)
《C和指针》
POINTERS ON C Kenneth A.Reek、
徐波 人民邮电出版社
评价:不算厚的书,纠正对指针的错误理解,这是必读经典,相信会带给你很多思考。(单单一本还不够,继续往后看)
《C陷阱与缺陷》
Andrew Koenig、 高巍
人民邮电出版社
评价:172页,应当1-2天看完,读完豁然开朗,对C语言常见的陷阱进行剖析,必须经典。
《C专家编程》
Expert C Programming Deep C Secrets Peter Van
Der Linden 人民邮电出版社 (2008-02出版)
评价:200多页,应当2天左右看完,本书读起来很舒坦,不可多得的好书,带你领略语法之外的奥秘,必读经典。
②数据结构与算法:
《清华大学计算机系列教材•数据结构(C语言版)(附光盘1张)》
吴伟民、 严蔚敏
清华大学出版社
评价:数据结构都是类C的伪代码描述,初次接触编程的同学可能理解不了,我也一样。我是看严蔚敏视频学会的数据结构,希望这个办法对你们也同样有效。
《计算机算法设计与分析(第3版)》
王晓东
电子工业出版社
评价:这是我们的课本,不过的确是学习它才把数据结构和算法入门了,为后面进阶做了铺垫。
《算法艺术与信息学竞赛•算法竞赛入门经典》
刘汝佳
清华大学出版社
评价:了解数据结构怎么用,常用算法与思想,书不厚,但很给力。初学可能有障碍,但这的确是入门经典书籍,请不要放弃。
《算法导论(原书第2版)》
科曼(Cormen T.H.)、等、 潘金贵
机械工业出版社 (2006-09出版)
评价:经典中的经典,无需多说,不要问我看哪些内容,负责任的说:有能力就多看点,其实都能看懂,书中的内容与思想将会终身受用。
《编程之美:微软技术面试心得 》
《编程之美》小组
电子工业出版社
评价:微软出品,像是一本小故事集,将数学和编程之美展露无疑,学起来很轻松,反复回顾收获颇丰。
《编程珠玑(第2版)》
Jon Bentley、黄倩、 钱丽艳
人民邮电出版社
评价:主要是数据结构和算法,都是常用的内容,不过作者思维新奇,跟随作者一起思考会碰撞出不少火花,评价非常高的一本书,本人没有顺序阅读,感兴趣的内容翻了翻。
《算法艺术与信息学竞赛 》
刘汝佳
清华大学出版社
评价:放在最后,因为此书的确很专业,我这点智商也驾驭不了,信息学竞赛必备。
《程序员面试宝典(第3版)》
欧立奇、刘洋、 段韬
电子工业出版社
评价:这本书很神奇,大二下学期的时候我就买了并看完了,等到大三找工作的时候发现里边的提到的陷阱题目还是有点意思的,C语言掌握的怎么样拿这本书验一验就知道了。
《数学之美》
(《浪潮之巅》作者吴军最新力作,李开复作序推荐,Google黑板报百万点击)