图书前言

  

  

  

  

  

  

  

  

  我国已开始全面建设社会主义现代化国家,全国各族人民正在为全面推进中华民族伟大复兴而团结奋斗。青年强,则国家强。广大青年学子应自信自强、守正创新,踔厉奋发、勇毅前行。作为计算机相关领域的青年学子,应学好程序设计相关知识,积极成长为创新型人才,进而成为德智体美劳全面发展的社会主义建设者和接班人。

  自1996年中国首次举办ACM国际大学生程序设计竞赛(ACM International Collegiate Programming Contest,ACM-ICPC或ICPC)亚洲区预选赛以来,国内各高校相关师生越来越重视大学生程序设计竞赛。中国大学生程序设计竞赛(China Collegiate Programming Contest,CCPC)旨在“激励当代大学生运用计算机编程技术和技能来解决实际问题,激发其学习算法和程序设计的兴趣,培养其团队合作意识、创新能力和挑战精神”。目前,ICPC、CCPC及团体程序设计天梯赛(Group Programming Ladder Tournament,GPLT)等是国内大学生主要参加的大规模赛事。

  本书是第二批国家级一流本科课程配套教材《大学生程序设计竞赛入门——C/C++程序设计(微课视频版)》的第2版,主要以C++语言描述过程化程序设计,同时兼顾C语言,并引入大学生程序设计竞赛的基础知识。本书重点讨论过程化程序设计的基础知识、程序控制结构、数组、函数、结构体、指针、链表等方面的内容,希望能为零基础学习C/C++程序设计的同学夯实基础。本书引入的程序设计竞赛基础知识主要包括在线做题结构、空间换时间的思想与方法、C++标准模板库(Standard Template Library,STL)常用容器、递推与动态规划、搜索、并查集、贪心法、回溯法、大整数运算及简单数学问题等,希望对拟参加大学生程序设计竞赛的同学有所帮助。

  本书立足于在线测评系统(Online Judge,OJ),以OJ上的问题为载体和核心,把对问题的分析和求解作为主线,简化了语法和理论知识的讲解,注重运用知识求解具体问题。本书以问题为导向,适合学生针对OJ问题进行探究式学习,注重培养学生的计算思维及编程求解具体问题的能力。

  书中带“*”的章节,主要是程序设计竞赛相关的内容,可根据读者的实际需要,自主学习,或由教师酌情选讲。因本书编程方面的例题与习题较多,故教师可以酌情选讲,学生也可以酌情选学。

  本书中的编程例题、习题主要来自OJ。书中大部分例题和编程习题来自绍兴文理学院原有OJ,这离不开绍兴文理学院程序设计类课程组教师历年来的辛

勤工作,在此表示由衷的感谢!书中部分编程例题和习题改编自浙江大学OJ(简称ZOJ)、杭州电子科技大学OJ(简称HDOJ)和浙江工业大学OJ(简称ZJUTOJ)等OJ上的题目,在此对出题者及相关的教师、同学表示由衷的感谢!

  为便于读者编程练习,我们在程序设计类实验辅助教学平台(Programming Teaching Assistant,PTA)组建了题目集,包含书中编程方面的例题、习题及基础知识方面的选择题。使用本教材的教师可联系作者或出版社获取该题目集的分享码以便于自建题目集供学生练习,其他读者可联系作者提供PTA注册邮箱获得该题目集的实践资格。本书提供配套教学资源(PPT、例题代码、习题代码、选择题参考答案等),使用本书的教师可以联系出版社获取。

  在编写本书的过程中,除参考自编教材之外,作者还参阅了一些C/C++程序设计、数据结构与算法的著作,从中吸收了新的思想、新的内容,书中部分内容和习题参考了这些著作及其网络资源,在这里对所参考著作的作者及相关人员表示衷心感谢!

  在编写本书的过程中,编者力图在问题驱动、竞赛引导、能力导向及强化实践等方面有所突破、有所创新,然而受限于能力和水平,书中难免存在不足之处,敬请阅读本书的读者批评指正。

  

  黄龙军 ????

  2024年10月??

II

?大学生程序设计竞赛入门——C/C++程序设计(微课视频版)第2版  

III

                                                                         ?????

前  ?言