内容推荐 本书主要介绍程序设计算法的基础知识,通过算法问题实践讲解程序设计常用的算法,包括题目描述、题目分析,并给出参考代码。本书可以作为基础语言(C、C++)的后续内容,用于巩固和提高数据结构的相关知识,此外,亦可为软件工程、应用程序开发、网络信息技术、大数据和人工智能等提供算法知识基础。 本书可作为普通高等学校计算机及工科专业教材或从事软件程序设计人员的参考书,也可作为大学生程序设计竞赛的训练指导书。 目录 第1章 程序设计算法概述 1.1 算法实现过程 1.2 算法的特征及评价标准 1.3 算法分析 1.4 算法实践 第2章 基础算法 2.1 枚举法 2.1.1 生理周期(Biorhythms/1006) 2.1.2 立方体(Blocks/2363) 2.1.3 完美立方(Perfect Cubes/1543) 2.1.4 千年虫病毒(Y2K Accounting Bug/2586) 2.1.5 保险箱(Safecracker/1248) 2.1.6 装盒问题(Packets/1017) 2.2 递归法 2.2.1 递归函数(Function Run Fun/1579) 2.2.2 还原二叉树(Tree Recovery/2255) 2.2.3 分形(Fractal/2083) 2.2.4 放苹果(1664) 2.2.5 排列问题(Orders/1731) 2.3 分治法 2.3.1 谁在中间(Who’s in the Middle/2388) 2.3.2 排序问题(Ultra-QuickSort/2299) 2.3.3 好斗的牛(Aggressive cows/2456) 2.3.4 分馅饼(Pie/3122) 2.3.5 木杆的膨胀(Expanding Rods/1905) 2.3.6 星形还是树形(A Star not a Tree?/2420) 序言 掌握程序设计算法,在使用计算机进行程序设计, 以及分析和解决实际问题时会起到重要的作用。通过基 本算法的学习,掌握算法设计的基本知识、基本技术和 基本方法,并进一步理解算法设计的基本思想和科学原 理,掌握算法设计中的计算思维和解题策略,可以培养 应用知识解答复杂问题的能力,形成良好的算法设计思 想、方法技巧与风格,进行构造性思维,强化程序抽象 能力和数据抽象能力,为进一步的程序设计开发打下坚 实的基础。 本书从实践出发,结合北京大学在线评测系统 (http://poj.org)的实际例题,对计算机程序设计和 算法竞赛涉及的算法进行分析,并扩展相关领域的知识 和应用。本书内容覆盖了程序设计算法的相关知识,包 括基础算法、基础数据结构、动态规划、贪心算法、高 级数据结构、搜索算法、图算法和计算几何等。 本书由教学和程序设计竞赛训练讲义改编而成,所 选实践训练题目均来自北京大学在线评测系统。 本书由李昊编著,编者是吉林师范大学大学生程序 设计竞赛的负责人,并一直从事相关课程的教学工作。 编者在编写本书的过程中,得到了其他竞赛教练和竞赛 队员的支持和帮助,包括白文秀、曹宇、英昌盛、纪卓 志等。杨雁升、李俊豪、董霖霖等参与了文稿校对并修 正了多处代码问题,编者谨此一并致以诚挚的谢意! 在本书的编写过程中,编者参阅并借鉴了国内外一 些同行的文章和著作,这里不一一列举、标明,在此向 他们致以谢意! 由于编者水平有限,加之学科理论与技术发展日新 月异,书中疏漏之处在所难免,恳请广大读者指正。 |