挑战程序设计竞赛2算法和数据结构详细讲解了算法与复杂度、初等和高等排序、搜索、递归和分治法、动态规划法、二叉搜索树、堆、图、计算几何学、数论等与程序设计竞赛相关的算法和数据结构,既可以作为挑战程序设计竞赛的参考书,也可以用来引导初学者系统学习算法和数据结构的基础知识

编辑推荐

1.畅销书《挑战程序设计竞赛》第2弹!

2.网罗算法和数据结构的关键知识点!

3.系统学习基础知识——适合初学者的入门书

 有效运用在线评测——适合挑战者的参考书

4.全书练习均可借助在线评测系统(AIZU ONLINE JUDGE)

 与竞赛相同的自动审查系统,有效检测Bug和算法效率

 大量习题及往年真题,体验各类题型、总结答题技巧

 与世界各地选手相互切磋、共同成长

5.入门、挑战、进阶,享受收集算法的乐趣!

展开

作者简介

渡部有隆(作者)

出生于1979年,计算机理工学博士。会津大学计算机理工学部信息系统学部门副教授。专业领域为可视化编程语言。AIZU ONLINE JUDGE开发者。

Ozy(审校)

本名冈田佑一,出生于日本大阪的短码高手。他花费相当长的时间提升短码编程技术,进而将其发展成一种技能,曾获得程序设计大赛的冠军。他开办过程序设计方面的培训班,目前致力于数学教育和程序设计师的培养工作。曾著有《短码之美:变成达人的心得技法》(人民邮电出版社)。

秋叶拓哉(审校)

2011年考入东京大学研究生院。以iwi的昵称活跃在程序设计竞赛中。TopCoder评级好成绩为世界第四(2013年)。《挑战程序设计竞赛(第2版)》(人民邮电出版社)作者之一。

展开

3种主要对策

1,编程语言

要想在竞赛中解题,至少要掌握一门编程语言的基本语法。大多数程序设计竞赛允许使用C/C++和Java,各位不妨选择其中一个,认真掌握变量、标准输入输出、分支处理、循环处理、数组等的基本语法。本书推荐各位使用C++,因此参考答案以C++为主

2,灵活运用基础算法知识和程序库

大多数情况下,只要能够灵活运用基本算法、数据结构以及相关的库,就完全能够应付初、中级竞赛题目。如果知晓(掌握)正确且高效的算法与数据结构,更能降低Bug出现率,同时加快解题速度

不论算法与数据结构是基础的还是高等的,只要其有可能出现在竞赛中,就将其打包成库随身携带,从而有效提高再利用率

3,灵活的想象力以及高超的算法

如果想在竞赛中跻身前列,除了优秀的思考能力和想象力之外,还需要博大的知识储备以及高超的实现能力。本书并不涉及这一领域,有兴趣的读者可以参考《挑战程序设计竞赛(第2版》(人民邮电出版社,2013)一书,在其中学习各个领域的高超算法及编程技巧

展开

算法是什么

算法由英文Algorithm直译而来,即“运算法则"。广义上讲,就是指“达成某种目的的步骤"。日常生活中,“早上起床,换衣服一吃早饭,骑自行车上学”就是一种算法。在计算机界,我们将通过数据处理、数值运算、组合计算、模拟等操作解决问题的步骤称为算法。严格来说,算法是一种具有明确定义的规则,能针对问题进行正确输出并停止。在这世上,每一个问题都对应着无数种算法,不同的算法所需的运算时间也天差地别。开发新系统,或者利用、借鉴前人们研究开发的各种古典算法,都可以高效地解决问题,另外,当我们需要自己设计算法时,也可以借鉴现有算法的思路。


游客,本帖隐藏的内容需要积分高于 55 才可浏览,您当前积分为 0



回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则

    快速回复 返回顶部 返回列表