新書推薦:
《
简帛时代与早期中国思想世界(上下册)(王中江著作系列)
》
售價:NT$
1400.0
《
进化主义在中国的兴起(王中江著作系列)
》
售價:NT$
950.0
《
不废风雅 生活的意趣(汪曾祺风雅意趣妙文)
》
售價:NT$
280.0
《
东亚世界形成史论(新版)
》
售價:NT$
490.0
《
奶奶的半个心愿 “课本里的作家” 中考热点作家孙道荣2024年全新散文集
》
售價:NT$
190.0
《
天生坏种:罪犯与犯罪心理分析
》
售價:NT$
445.0
《
新能源材料
》
售價:NT$
290.0
《
传统文化有意思:古代发明了不起
》
售價:NT$
199.0
|
編輯推薦: |
这是一本“算法入门”书,写给“正在学或刚学过编程语言,但是数据结构、算法零基础”的初学者。
本书的读者符合这样的画像:刚学过编程语言,C/C 、Java、Python 这几种语言中的任何一个都可以;有基本的编码能力,语法比较熟悉;编过一些代码,但仍然不熟练;不懂数据结构和算法,遇到较难的问题没有思路。
这位勤奋的读者有以下目标:
(1)数据结构和算法入门,建立计算思维。
(2)大量编码,提高编码能力。
(3)参加蓝桥杯大赛并获奖。
如果读者准备参加蓝桥杯全国软件和信息技术专业人才大赛(软件类),看这本书正合适,因为题目大多是蓝桥杯大赛的真题,并且按照蓝桥杯大赛的要求进行了详细的解析。
本书也适用于准备其他算法竞赛,例如全国青少年信息学奥林匹克竞赛(NOI)、国际大学生程序设计竞赛(ICPC)、中国大学生程序设计竞赛(CCPC)、中国高校计算机大赛G团体程序设计天梯赛等,因为所有的算法竞赛的考点都是相通的。
用一句话概括本书的作用:通过本书的学习,读者可以从一名蓝桥杯、算法竞赛的小白,成长为掌握算法知识、建立算法思维、具备编码能力的专业的计算机编程人才。
|
內容簡介: |
本书是蓝桥杯大赛软件类入门教程,详细讲解了蓝桥杯大赛软件类入门阶段的核心知识点,也是大赛必考和常考的知识点,包括数据结构、基本算法、搜索、数学、动态规划、图论等。
本书用大量的大赛真题作为例题,帮助读者巩固知识点的应用; 代码简洁精要,可作为比赛模板; 文字简洁明快,实现了较好的易读性。
本书适合正在学编程语言或刚学过编程语言,算法和数据结构零基础的算法竞赛初学者,帮助读者学习的知识点、建立计算思维、提高建模能力和编码能力; 本书也可用于其他算法竞赛(全国青少年信息学奥林匹克竞赛(NOI)、国际大学生程序设计竞赛(ICPC)、中国大学生程序设计竞赛(CCPC)、中国高校计算机大赛团体程序设计天梯赛等)的入门学习。
|
目錄:
|
第1章蓝桥杯软件赛概述
1.1蓝桥杯软件赛的参赛规则
1.2蓝桥杯软件赛的题型介绍
1.3蓝桥杯软件赛的判题
1.4蓝桥杯软件赛的知识点
1.5备赛计划
第2章杂题和填空题
2.1杂题和编程能力
2.2杂题例题
2.3填空题概述
2.4填空题例题
第3章Python语言和数据结构基础
3.1Python常用功能
3.1.1输入和输出
3.1.2字符串
3.1.3日期库
3.1.4set和字典去重
3.2列表与数组
3.2.1列表的常用功能
3.2.2用列表实现数组
3.3链表
3.3.1用列表list实现链表
3.3.2手写链表
3.4队列
3.4.1Python队列
3.4.2例题
3.5优先队列
3.6栈
3.7二叉树
3.7.1二叉树的概念
3.7.2二叉树的存储和编码
3.7.3例题
3.8并查集
3.8.1并查集的基本操作
3.8.2路径压缩
3.8.3例题
3.9扩展学习
第4章排序和排列
4.1十大排序算法
4.1.1选择排序
4.1.2冒泡排序
4.1.3插入排序
4.1.4希尔排序
4.1.5计数排序
4.1.6桶排序
4.1.7基数排序
4.1.8归并排序
4.1.9快速排序
4.1.10堆排序
4.2排序函数
4.2.1sort()和sorted()函数
4.2.2lambda在排序中的应用
4.2.3例题
4.3排列和组合
4.3.1手写全排列和组合
4.3.2排列函数permutations()
4.3.3组合函数combinations()
4.3.4例题
第5章基本算法
5.1算法与算法复杂度
5.1.1算法的概念
5.1.2计算资源
5.1.3算法复杂度
5.2前缀和
5.2.1前缀和的概念
5.2.2例题
5.3差分
5.3.1一维差分
5.3.2二维差分
5.4二分
5.4.1二分法的经典应用
5.4.2例题
5.5贪心
5.5.1经典贪心问题
5.5.2例题
5.6扩展学习
第6章搜索
6.1DFS代码框架
6.2DFS常见应用
6.2.1DFS与排列组合
6.2.2DFS与连通性
6.3DFS剪枝
6.4DFS例题
6.5BFS基本代码
6.6BFS与最短路径
6.7BFS判重
6.8例题
6.9扩展学习
第7章数学
7.1模运算
7.2快速幂
7.3素数
7.3.1素数的判定
7.3.2素数筛
7.3.3质因数分解
7.4GCD和LCM
7.4.1GCD
7.4.2LCM
7.4.3例题
7.5扩展学习
第8章动态规划
8.1动态规划的概念
8.2动态规划的两种编码方法
8.3DP设计基础
8.4DP背包
8.4.10/1背包
8.4.2完全背包
8.4.3分组背包
8.4.4背包相关问题
8.5DP例题
8.6扩展学习
第9章图论
9.1图的存储
9.2最短路径算法
9.2.1Floyd
9.2.2Bellmanford
9.2.3Dijkstra
9.3最小生成树
9.3.1Prim算法
9.3.2Kruskal算法
9.4扩展学习
|
內容試閱:
|
经过十多年的发展,蓝桥杯大赛已经成为中国参赛人数最多、影响最大的计算机竞赛。在权威的全国普通高校学科竞赛排行榜上,蓝桥杯大赛名列其中,是广受欢迎的信息类专业竞赛。蓝桥杯大赛的奖牌是大学生计算机能力的有力证明。
本书读者对象
这是一本“算法入门”书,写给“正在学或刚学过编程语言,但是数据结构、算法零基础”的初学者。
本书的读者符合这样的画像: 刚学过编程语言,C/C 、Java、Python这几种语言中的任何一个都可以; 有基本的编码能力,语法比较熟悉; 编过一些代码,但仍然不熟练; 不懂数据结构和算法,遇到较难的问题没有思路。
这位勤奋的读者有以下目标:
(1) 数据结构和算法入门,建立计算思维。
(2) 大量编码,提高编码能力。
(3) 参加蓝桥杯大赛并获奖。
如果读者准备参加蓝桥杯全国软件和信息技术专业人才大赛(软件类),看这本书正合适,因为题目大多是蓝桥杯大赛的真题,并且按照蓝桥杯大赛的要求进行了详细的解析。
本书也适用于准备其他算法竞赛,例如全国青少年信息学奥林匹克竞赛(NOI)、国际大学生程序设计竞赛(ICPC)、中国大学生程序设计竞赛(CCPC)、中国高校计算机大赛团体程序设计天梯赛等,因为所有的算法竞赛的考点都是相通的。
用一句话概括本书的作用: 通过本书的学习,读者可以从一名蓝桥杯、算法竞赛的小白,成长为掌握算法知识、建立算法思维、具备编码能力的专业的计算机编程人才。
本书内容介绍
蓝桥杯大赛软件赛是蓝桥杯大赛中参赛人数最多的项目,包括Java软件开发、C/C 程序设计、Python程序设计三个子项。蓝桥杯大赛软件赛是算法竞赛,考核数据结构和算法,包括数据结构、基本算法、搜索、动态规划、数学、图论、字符串等。掌握这些知识点是计算机专业人才的核心能力。
蓝桥杯大赛官方在2023年发布《蓝桥杯大赛软件赛知识点大纲》,按难度分为三部分: 大学C组、大学B组、研究生及大学A组。本书内容精选了其中初级(≥大学C组)和部分中级(≥大学B组)知识,都是必考或常考知识点。还有一些中级和高级知识点,因为难度较高,不适合在入门阶段学习,本书没有涉及。下表是蓝桥杯大纲与本书内容的对照。
本书内容与蓝桥杯大纲知识点对照
组别蓝桥杯大赛软件赛知识点大纲本书对应章节
大学
C组
枚举第2章 杂题和填空题
排序: 冒泡排序、选择排序、插入排序4.1 十大排序算法
搜索: BFS、DFS
6.1 DFS代码框架
6.2 DFS常见应用
6.5 BFS基本代码
6.6 BFS与最短路径
6.7 BFS判重
模拟
前缀和
二分
贪心
5.2 前缀和
5.3 差分
5.4 二分
5.5 贪心
DP: 普通一维问题
8.1 动态规划的概念
8.2 动态规划的两种编码方法
8.3 DP设计基础
高精度
3.1 数组与高精度(C 版)
数据结构: 栈、队列、链表、二叉树第3章 Python语言和数据结构基础
数学: 素数、GCD、LCM、快速幂
7.1 模运算
7.2 快速幂
7.3 素数
7.4 GCD和LCM
大学
B组
排序: 归并排序、快速排序、桶排序、堆排序、基数排序
4.1 十大排序算法
搜索: 剪枝
6.3 DFS剪枝
搜索: 双向BFS、记忆化搜索、迭代加深搜索、启发式搜索
(本书没有涉及)
DP: 背包DP
8.4 DP背包
DP: 树形DP、状压DP、数位DP、DP的常见优化
(本书没有涉及)
字符串: 哈希、kmp、manacher
(本书没有涉及)
图论: 最小生成树、单源最短路
9.2 最短路径算法
9.3 最小生成树
图论: 欧拉回路、差分约束系统、拓扑排序、二分图匹配、图的连通性问题(割点、桥、强连通分量)、DFS序、最近共同祖先
(本书没有涉及)
数学: 排列组合
4.2 排序函数
4.3 排列和组合
数学: 二项式定理、容斥原理、模意义下的逆元、矩阵运算、高斯消元
(本书没有涉及)
数据结构: 并查集
3.8 并查集
数据结构: ST表、堆、树状数组、线段树、Trie树
(本书没有涉及)
计算几何(基础计算和基本位置关系判定); 概率论、博弈论
(本书没有涉及)
研究
生及
大学
A组
字符串(AC自动机、拓展kmp、后缀数组、后缀自动机、回文自动机); 图论(网络流、一般图匹配); 数学(生成函数、莫比乌斯反演、快速傅里叶变换); 数据结构(树链剖分、二维/动态开点线段树、平衡树、可持久化数据结构、树套树、动态树)
(本书没有涉及)
由于蓝桥杯软件赛有三种语言,所以作者编写了三个版本: 《蓝桥杯算法入门(C/C )》、《蓝桥杯算法入门(Java)》和《蓝桥杯算法入门(Python)》,形成一个系列。这三个版本对数据结构和算法的理论讲解相同,选用的例题大部分一样。不同的内容也很多,例如C/C 的STL、Java的类、Python的字符和日期库,例题用各自的语言给出模板代码。
目前出版的算法竞赛书籍中,代码绝大部分都是用C/C 语言写的,极少有其他语言的版本。因此,本系列中的Java和Python版本填补了这一空白。
本书是Python版。Python组是参赛人数较多的组,约占总人数的五分之一,并且近年来参赛人数增长迅速。Python的编程极为轻松,在很多方面比其他语言更强大。本书在多个章节中详解了Python特有的应用,例如“3.1 Python常用功能”详解了常用的功能,如字符串处理、日期库、set、字典map; “3.2 列表与数组、3.3 链表、3.4队列、3.5优先队列、3.6栈”介绍了Python的数据结构; “4.2 排序函数”介绍了Python的sort()、sorted()函数; “4.3 排列和组合”介绍了permutations()、combinations()。熟练掌握Python语言的各种特性是竞赛队员的技能,能极大地减少编码难度和编码时间。
为便于教学,本书提供教学课件、程序源码和400分钟的微课视频。
资源下载提示
教学课件: 扫描封底的“图书资源”二维码,在公众号“书圈”下载。
源码: 扫描目录上方的二维码下载。
微课视频: 扫描封底的文泉云盘防盗码,再扫描书中相应章节的视频讲解二维码,可以在线学习。
备赛经验
由于蓝桥杯的影响力,很多大学生在大一就会参加蓝桥杯软件赛,但是第一次参赛的新手往往铩羽而归。因为蓝桥杯大赛是极为专业、全面考核计算机能力的计算机竞赛,它对编码能力、算法知识、计算思维、计算机建模的要求极高。
刚接触蓝桥杯大赛的学生往往有这样的困惑: 蓝桥杯大赛似乎很难、很花时间,不仅难以入门,而且学习成本很高,至少需要高强度学习半年以上才有可能得奖,然后再用一年甚至两年的勤奋学习,才能取得好成绩。每个读者都希望有一个性价比很高的学习方法: 学习时间尽量少,得奖尽量大!那么,阅读这本书是得奖的捷径吗?答案是薛定谔之猫: 是,也不是。
回答“是”。这本书指引了一条合适的、正确的蓝桥杯备赛之路,让读者少走弯路。本书包括了蓝桥杯省赛二等奖所需的知识点,讲解了大量的大赛真题,并列出了巩固知识点所需要的练习题。本书的章节是按照学习难度循序渐进地展开的,读者只需要按从前到后的顺序阅读即可。只要用心看书并大量做题,得奖有相当的保证。
回答“不是”。“捷径”往往是“艰难”的代名词,“捷径”往往更费力,正如爬山的捷径更陡峭、更费力一样。读者是否能走通这个捷径,取决于你花费的精力有多少。简单地说,算法竞赛没有轻松的学习方法,一切都是“硬”实力,没有花哨的投机取巧。
还有一点让低年级参赛者感到压力巨大: 竞赛涉及的知识点是“超纲”的,往往在大三、大四的专业课程中才会涉及,甚至很多知识点根本就不会在计算机专业的课程中出现,这些知识点中有一些是很基本的考点; 而且蓝桥杯软件赛不是那种短期培训就能迅速获得成绩的竞赛,如果等到大三或大四才参赛,已经来不及了。如何解决“超纲”问题?这就是本书的意义: 算法竞赛需要拓展大量课外的专业知识,很多拓展内容在本书中进行了详细介绍。当然,本书定位是“入门”,只拓展了部分知识,更全面的算法知识点解析请阅读作者的另一本书《算法竞赛》,这是一本算法大全,覆盖了95%的算法竞赛知识点。
在准备蓝桥杯大赛时,请注意以下几个重要问题。
(1) 刷题。
备赛需要大量做题,这是最重要的一条。只读理论、只看书,而不做题,学习效果只会略大于零,对知识点的理解无法转化为能编码解决问题的“硬实力”。刷多少题合适?本书介绍了算法竞赛中的常见初级和中级知识点,每个知识点做10~20题,总共做600题左右,这是蓝桥杯算法入门需要的最少做题量。
(2) 速度。
参加蓝桥杯大赛,编码速度极为重要。比赛时间只有4小时,非常紧张。编码速度决定了获奖的级别。如何提高编码速度?有以下技巧。
熟练掌握集成编译环境。把编译环境变成得心应手的工具。
快速读题。每道题需要建模后才能编码。快速读完题目并想出合适的算法,这需要经过大量的做题训练。训练的时候提高大脑的兴奋度,用最快的速度理解题目并建立计算机编码模型。
减少调试。写好程序后,争取能一次通过测试样例。为了减少调试,尽量使用不容易出错的方法,例如少用指针、多用静态数组、把逻辑功能模块化等,不要使用动态调试方法,不要使用单步跟踪、断点等调试工具。如果需要查看中间的运行结果,就在代码中的关键地方打印出调试信息。
使用库函数。如果题目涉及比较复杂的数据处理,用库函数可以大大减少编码量,而且能减少错误的发生。平时注意积累C/C 、Java、Python语言的库函数,并做到熟练应用。
(3) 模板。
模板是某些数据结构、算法的标准代码。模板代码是计算机科学发展过程中凝练出的精华。
模板很有用,例如并查集模板、快速幂模板、埃氏筛模板等,需要牢记并熟练应用。学习经典算法时,需要整理代码模板并多次学习和使用它。
有的算法竞赛可以带纸质资料进场,相当于开卷考试,例如ICPC、CCPC,很多竞赛队员带了厚厚的打印代码和各种书籍进场参赛。但是蓝桥杯大赛禁止带任何资料进场,是闭卷考试,完全靠脑力,需要记住模板。这增加了一些难度。
有初学者问: 我想速成,来不及做很多题,不过我可以多准备一些模板,把模板背会,是不是也能获奖?回答是: 模板有用且需要掌握,但赛场上模板的用处有限。不同的编程题目,即使用到相同的算法或数据结构,也往往不能用同样的代码,而需要做很多修改,因为不同环境下的变量和数据规模是不同的。对模板的学习和使用,需要多花一些时间,融会贯通,不能急躁。注意,模板的代码需要自己真正理解、熟练掌握并多次使用过,才能在做题的时候快速应用到编码中。
最后用一段话寄语读者。教育的目的是什么?英国教育家怀特海说: “学生是有血有肉的人,教育的目的是激发和引导他们的自我发展之路。”算法竞赛就是促进学生自我发展的一条康庄大道。大学的创新学习有三条途径,缺一不可: 一是以竞促学; 二是以研促学; 三是以创促学。参加算法竞赛,好处体现在很多方面: 保研、奖学金、考研、就业、出国、创新学分。本书将帮助你掌握算法竞赛知识,建立计算思维,提高编程能力,在算法竞赛中披荆斩棘,立于不败之地。
罗勇军杨建国 2024年8月于上海
|
|