第2版 前言思政材料 一些著名的计算机科学家在有关计算机科学教育的论述中认为,计算机科学是一种创造性的思维活动,其教育必须面向设计。算法被公认为是计算机科学的基石。因此,算法设计这门课在计算机科学与技术学科中占核心地位。学会读懂算法、设计算法是计算机专业学生的一项最基本的要求。通过对计算机算法系统的学习与研究,理解和掌握算法设计的主要方法,培养对算法优化和分析的能力,将为运用计算机解决实际问题奠定坚实的基础。 本书在第1版的基础上对部分章节做了修改和完善,旨在使本教材适合读者学习C语言后即可直接使用,不需要数据结构等其他计算机专业知识。因此删除了所有与数据结构等相关的典型例题,增加了简单的趣味性的典型例题。 全书共分为12章。第1章简要介绍了算法设计、分析和优化的基础知识,第2章~第11章系统讲解了10种常用的算法设计方法,分别为求值法、累加法、累乘法、递推法、递归法、枚举法、分治法、贪心法、回溯法和动态规划法,第12章是算法设计综合应用。 本书是在第1版基础上,由吉林师范大学滕国文完成第1、2、3、9、10、12章的修订编写,中国人民解放军32201部队滕泰完成第4、5、6、7、8、11章的修订编写。数据科学与大数据专业2020级学生(力赫、刘聪慧、王小灿和王冠捷)和2021级学生(周航、陈思雨、张震和朱怡霏)参与了部分代码编写、程序调试和校对工作,作者深表感谢! 在本书的编写过程中,作者参阅并借鉴了国内外诸多同行的文章和著作,这里不一一列举、标明,在此谨致以诚挚的谢意! 本书得到了吉林师范大学教材出版基金资助。 由于作者水平有限,加之学科理论与技术发展日新月异,因此书中疏漏、谬误之处在所难免,恳请广大读者指正。 作者2023年2月第1版 前言〖HL)]一些著名的计算机科学家在有关计算机科学教育的论述中认为,计算机科学是一种创造性的思维活动,其教育必须面向设计。算法被公认为是计算机科学的基石。因此,算法设计这门课在计算机科学与技术学科中占核心地位。学会读懂算法、设计算法是计算机专业学生的一项最基本的要求。通过对计算机算法系统的学习与研究,理解和掌握算法设计的主要方法,培养对算法优化和分析的能力,将为运用计算机解决实际问题奠定坚实的基础。 计算机解决问题的核心是算法设计,算法设计的关键是掌握一些常用的算法设计方法和抽象的计算思维方式。 在本书各章的讨论中,首先介绍一种算法设计方法的基本思想,然后运用该算法设计方法解决经典问题,并给出用C语言描述的具体算法。通过比较各种算法设计方法在求解不同问题中的应用,牢固掌握算法设计技术的基本策略;通过比较不同算法设计方法在同一问题上的应用,更深刻体会算法设计方法的思想,锻炼逻辑思维能力,达到融会贯通的效果。 全书共分为12章。第1章简要介绍了算法设计、分析和优化的基础知识,第2~11章系统讲解了10种常用的算法设计方法,分别为求值法、累加法、累乘法、递推法、递归法、枚举法、分治法、贪心法、回溯法和动态规划法,第12章是算法设计综合应用。 本书的第1、12章由滕国文执笔;第2、3章由宫耀勤执笔;第4、5章由李闯执笔;第6、11章由滕泰执笔;第7、8章由丛飚执笔;第9、10章由张伟执笔。2010级学生(张天骥、徐悦、姜波、张丽、杨昌宇、周凯、李金刚、张梦琳、罗春龙、王琪、曹宇和李少军)和硕士研究生(滕硕、董亚群、刘洋、张菁、曾轩、肖春英和张雷)参与了部分代码编写和程序调试工作,夏凤琴、温毓铭和2010级部分学生参与了书稿的校对工作,作者在此一并致以诚挚的谢意!全书由滕国文教授统稿、审阅和整理后定稿。在本书的编写过程中,作者参阅并借鉴了国内外诸多同行的文章和著作,这里不一一列举、标明,在此谨致以谢意! 由于作者水平有限,加之学科理论与技术发展日新月异,因此书中疏漏、谬误之处在所难免,恳请广大读者指正。 作者2013年6月