信息学奥赛1:114道题零基础吃透C++与算法基础(视频教程+代码详解+刻意练习)
定 价:99 元
- 作者:王健伟 著
- 出版时间:2026/3/1
- ISBN:9787301370056
- 出 版 社:北京大学出版社
- 中图法分类:TP311.1;TP312.8
- 页码:400
- 纸张:
- 版次:1
- 开本:16开
-
商品库位:
全书分为两部分,共16章。第一部分(第1章~第7章)为C++语言基础,主要内容包括编程环境搭建、C++编程基础知识、数组、函数、编译预处理、结构体、数据交互、进制转换与位运算。第二部分(第8章~第16章)以算法刷题为主,涵盖8类常见算法题型,包括排序算法、递推算法、递归算法、搜索与回溯算法、高精度算法、贪心算法、分治算法、广度优先搜索算法。全书共解析信息学奥赛中114道经典例题。
本书适合信息学奥赛学习者自学或备考刷题使用,也可作为CSP-J认证考试的培训参考教材。
王健伟
----------------------------
王健伟,毕业于哈尔滨工程大学计算机及应用专业。拥有超过20年软件开发经验,主导或参与过数十个实战项目,技术领域涵盖网络通信、网络安全、网络游戏。曾联合创办知名网络安全公司——安络科技有限公司,并担任中国首套网络安全在线扫描评估系统的项目负责人,以及全球同服独立游戏《冒险之路》的制作人。近八年来,致力于编程教育,迄今已累计培养学员、读者数万名,遍布全球,其中众多学员已就职于国内外科技公司。
目录
第一部分 C++语言基础
第1章 C++语言编程环境选择与搭建
1.1 信息学奥赛环境说明
1.2 使用Visual Studio搭建C++编程环境
1.3 在Visual Studio中创建可运行的C++程序
1.4 使用Dev-C++搭建C++编程环境说明
1.5 在Dev-C++中创建能运行的C++程序
1.6 总结
第2章 C++编程基础知识
2.1 编写代码的基本规则
2.2 数据类型和存储空间
2.3 常量和变量
2.4 字符数据
2.5 字符串和字符的区别
2.6 变量初始化与数值型数据间的混合运算
2.7 认识一下算术运算符
2.8 强制类型转换
2.9 自增和自减运算符
2.10 赋值运算符与初始化
2.11 逗号运算符和逗号表达式
2.12 语句的分类
2.13 程序的基本结构
2.14 关系运算符和关系表达式
2.15 逻辑运算符和逻辑表达式
2.16 if选择结构语句的三种形式
2.17 if语句的嵌套使用
2.18 条件运算符和switch语句
2.19 当型循环和直到型循环语句
2.20 for循环语句与while循环语句的区别
2.21 循环嵌套与控制结构
第3章 数组
3.1 用一维数组解决多变量定义问题
3.2 二维数组和一维数组的区别
3.3 字符数组的定义和初始化
3.4 字符串和字符串结束标记
3.5 字符数组的输出和字符串处理函数
第4章 函数
4.1 函数的概念和用途
4.2 函数的定义和返回值问题
4.3 函数调用与函数声明
4.4 函数调用是否可以嵌套
4.5 函数的递归调用
4.6 递归调用的出口
4.7 局部变量和全局变量
第5章 编译预处理
5.1 宏定义
5.2 文件包含
第6章 结构体
6.1 结构体简介
6.2 定义结构体类型变量
6.3 结构体类型变量的使用
第7章 数据交互、进制转换与位运算
7.1 输入输出函数:scanf、cout、cin
7.2 命名空间
7.3 string类型
7.4 进制之间的转换
7.5 位运算
第二部分 算法刷题
第8章 数据结构与算法效率分析
8.1 基本概念、算法效率度量与大O表示法
8.2 算法时间复杂度计算规则
8.3 常见算法时间复杂度分析
8.4 算法的空间复杂度分析
第9章 排序算法
9.1 排序的基本概念
9.2 冒泡排序的理论详解
9.3 1176:谁考了第k名
9.4 1177:奇数单增序列
9.5 1178:成绩排序
9.6 1179:奖学金
9.7 1180:分数线划定
9.8 1181:整数奇偶排序
9.9 1182:合影效果
9.10 1183:病人排队
9.11 计数排序的理论详解
9.12 1184:明明的随机数
9.13 1185:单词排序
9.14 1186:出现次数超过一半的数
9.15 1187:统计字符数
9.16 1310:车厢重组
第10章 递推算法
10.1 同余定理
10.2 1188:斐波那契数列(2)
10.3 1189:Pell数列
10.4 1190:上台阶
10.5 1191:流感传染
10.6 1192:放苹果
10.7 1193:吃糖果
10.8 1194:移动路线
10.9 取余还是取模
10.10 1195:判断整除
10.11 1196:踩方格
10.12 兔子繁殖问题的正推与逆推
10.13 1312:昆虫繁殖
10.14 1313:位数问题
10.15 1314:过河卒(NOIP 2002)
第11章 递归算法
11.1 栈的概念
11.2 中缀、后缀、前缀表达式
11.3 1198:前缀表达式
11.4 1199:全排列
11.5 1200:分解因数
11.6 1201:斐波那契数列
11.7 1202:Pell数列
11.8 1203:括号匹配问题
11.9 1204:爬楼梯
11.10 1205:汉诺塔问题
11.11 1206:放苹果
11.12 1207:求最大公约数问题
11.13 1208:2的幂次方表示
11.14 1209:分数求和
11.15 1210:因子分解
11.16 1211:判断元素是否存在
11.17 1315:集合的划分
11.18 1316:数的计数(NOIP 2001)
第12章 搜索与回溯算法
12.1 1212:LETTERS
12.2 1213:八皇后问题
12.3 1214:八皇后
12.4 1215:迷宫
12.5 1216:红与黑
12.6 1217:棋盘问题
12.7 1218:取石子游戏
12.8 1219:马走日
12.9 1220:单词接龙
12.10 1221:分成互质组
12.11 1222:放苹果
12.12 排列与组合
12.13 1317:组合的输出
12.14 1318:自然数的拆分
12.15 2110:素数环
第13章 高精度算法
13.1 1168:大整数加法
13.2 1169:大整数减法
13.3 1170:计算2的N次方
13.4 1171:大整数的因子
13.5 1172:求10000以内n的阶乘
13.6 1173:阶乘和
13.7 1174:大整数乘法
13.8 1175:除以13
13.9 1307:高精度乘法
13.10 1308:高精度除法
13.11 1309:回文数(NOIP 1999)
第14章 贪心算法
14.1 1223:An Easy Problem
14.2 1224:最大子矩阵
14.3 1225:金银岛
14.4 1226:装箱问题
14.5 1227:Ride to Office
14.6 1228:书架
14.7 1229:电池的寿命
14.8 1230:寻找平面上的极大点
14.9 1231:最小新整数
14.10 1232:Crossing River
14.11 1233:接水问题
14.12 1319:排队接水
14.13 1320:均分纸牌(NOIP 2002)
14.14 1321:删数问题(NOIP 1994)
14.15 1322:拦截导弹问题(NOIP 1999)
14.16 1323:活动选择
14.17 1324:整数区间
第15章 分治算法
15.1 快速幂
15.2 1234:2011
15.3 快速排序
15.4 1235:输出前k大的数
15.5 1236:区间合并
15.6 归并排序
15.7 1237:求排列的逆序数
15.8 1238:一元三次方程求解
15.9 1239:统计数字
15.10 1240:查找最接近的元素
15.11 1241:二分法求函数的零点
15.12 1242:网线主管
15.13 1243:月度开销
15.14 1244:和为给定数
15.15 1245:不重复地输出数
15.16 1246:膨胀的木棍
15.17 1247:河中跳房子
15.18 1325:循环比赛日程表
15.19 1326:取余运算(mod)
15.20 1327:黑白棋子的移动
15.21 1328:光荣的梦想
第16章 广度优先搜索算法
16.1 队列的概念
16.2 1248:Dungeon Master
16.3 1249:Lake Counting
16.4 1250:The Castle
16.5 1251:仙岛求药
16.6 1252:走迷宫
16.7 1253:抓住那头牛
16.8 1254:走出迷宫
16.9 1255:迷宫问题
16.10 1256:献给阿尔吉侬的花束
16.11 1257:Knight Moves
16.12 1329:细胞
16.13 1330:最少步数