《深入浅出程序设计竞赛 基础篇》勘误
感谢读者阅读本书。因为作者有时候脑抽或者其他原因,本书不可避免出现一些疏漏。我们每次印刷都会尝试修正。如果你读书时遇到了一些困惑,也有可能是书确实写错了。
我们勘误时会记录第一次给提出这个错误的读者的用户名。感谢所有读者的反馈。
进阶篇书稿错误反馈收集:https://shimo.im/sheets/oFycLZIzveopR6BX/MODOC
2024 年 12 月第十二次印刷
严重错误
这类错误存在概念或者事实性错误,可能会对读者产生误导。
中等错误
这类错误因为疏忽而出现,虽然不至于误导读者,但是可能会给读者造成迷惑,一些读者可以意识到写错了。
- P146 例题 10-3,代码应当特判
A,B,C 中有0 的极端特殊情况。@NewIntMain - P220 习题 15-1,函数应当为
void play(int n)
。@M_MXJ - P231 代码中
if (x < t[root].value)
的对应注释,应当为“右子树所有数都比 x 大,故进入左子树”。@GMU_MaTao
小错误
这类错误包括错别字或者语病、笔误,不影响意思,读者不一定可以意识到这些错误。
- P39 代码第 13 行,应当为
cout << "Sorry..." << endl;
书本参考代码缺少一个.
。@duweiming - P49 “当 n=5,输入数据为 5 3 4 2 6”,应当为“输入数据为 5 3 4 2 4”。@Abcountance
- P51 “直到 a 变为 0 的时候,循环成立条件不再成立”,应为“a 变为 1 的时候”。@Fourteen14
- P73 代码中的变量
ans
应当初始化为 0。 - P101 代码注释应当为:
枚举 1 到 sqrt(x),来判断 x 是否为质数
,缺少了一对括号。@LG_Sam - P117 代码中
cout << w << ":" << l << endl
中,书中代码在输出冒号时多印刷了一个空格。@aichuan51396 - P170 合并果子的题面中,数据范围应当为:果子的种类数
n(n\leq 10000) ,每种果子的数目a_i(a_i \leq 20000) 。@Shack8 - P180 定义
int ans, mid;
中,无需定义变量mid
。@Crsuh2er0 - P194
#define maxn 310
应当修改为#define maxn 410
。@Shack8 - P205 例题 15-1 分析中第一段,“也就是
2\times 10^6 ” 右侧缺少一个右括号。@_lfggyliangfeng - P211 “在这里,越早写下的括号”这一段,应当在例 15-5 的分析讲解中。@Cryflmind
- P226 最后一段,
如果一个结点除了……
应为如果一个二叉树除了……
。自己发现 - P226 代码倒数第3行,
value[2] > value[3] ? winner[3] : winner[2]
应外加圆括号。@a_mouse - P240 第五行(图 17-4 下方一句),“由于 1 号的负责人变成了 2,所以 1 号的负责人变成了 2。”后半句“1 号的负责人变成了 2”删除。@maxyzfj
- P274 “只有填充 0 和 1 时才能初始化为 0 或 -1”应为“只有填充 0 和 -1 时才能初始化为 0 或 -1”。@XuOuXiao1024
2021 年 7 月第三次印刷 / 2021 年 12 月第四次印刷 / 2022 年 5 月第五次印刷
严重错误
这类错误存在概念或者事实性错误,可能会对读者产生误导。
中等错误
这类错误因为疏忽而出现,虽然不至于误导读者,但是可能会给读者造成迷惑,一些读者可以意识到写错了。
- P37,图 2-5,“x是0或1?”应该为“x不是0且x不是1?”。@littlekayen
- P167,例 12-2,代码第 12 行,sum 变量应该使用 long long 类型。@fufufu0601
- P226,例 16-1,第一段第一行
1>>n
应为1<<n
。@anantheparty - P299, 推论3第5行,
a的质因子个数
,应改为a的因子个数
@bowen404
小错误
这类错误包括错别字或者语病、笔误,不影响意思,读者不一定可以意识到这些错误。
- P78,例 5-10,代码第3行注释,
dight
应为digit
。@冰封侠 - P85页 delta=mmax-mmin 这一行后面缺了
;
号 - P107,最下方代码中的注释,
右上方矩阵
和下面一行的左下角矩阵
对调。@Hack3rD - P161,例 11-6,倒数第二段,
ABF[4RA[2A]B[3C]]
应为ABF[2RA[3A]B[2CD]]
@@Laofei - P249,代码16行的
de
应为ds
,倒数第4行改为cout << ds.size() << endl;
@Pretharp - P272, d[1] 的值
01100010
应为01100001
- P271,倒数第二行
提成
应为提升
@ynliao - P272,图 19-5,d[1] 的数字应为 01100001 @bowen404
- P275,例 19-8 逻辑运算性质 6) A+A=1 改为 A+非A=1,A·非0=0;例 19-9 分析 4) A=(y=0) 应为 A=(y≤0) @bowen404
- P286,代码下面第一行
改代码计算
应为该代码
@ynliao - P292,例 21-5 题目第2行,
依次
应为依次判断
@bowen404 - P295,定义 21-3 第1行,
d,|a_2
应为d|a_2
@bowen404 - P299,第1行, 第二个
(10, 16)
应改为[10, 16]
@bowen404 - P290,第一段程序第4行的
i++
应当改为k++
@Jeremy_Mandel
2020 年 10 月第一次印刷 / 2020 年 11 月第二次印刷
严重错误
这类错误存在概念或者事实性错误,可能会对读者产生误导。
中等错误
这类错误因为疏忽而出现,虽然不至于误导读者,但是可能会给读者造成迷惑,一些读者可以意识到写错了。
- P59,例 4-11,倒数第二段,
就要改成 s+=++i
应为就要改成 s+=i++
。自己发现 - P95,习题 6-3,
和 3 个 girl
应为和 2 个 girl
@Fее_cle6418 - P100 运行步骤 2),
变量 x1、y1、x2、y1
应为变量 x1、y1、x2、y2
;x1=3,y2=0,x2=0,y2=4
应为x1=3,y1=0,x2=0,y2=4
@Fее_cle6418 - P133,图9-6,第四轮的图中5所对应的牌应当在9对应的牌的的前面。@wzmzmhk
- P138 例 9-6 代码 cmp 函数应为:自己发现
int cmp(student a, student b) { if(a.total != b.total) return a.total > b.total; // 总分先定胜负 if(a.chinese != b.chinese) return a.chinese > b.chinese; // 然后比语文 return a.id < b.id; // 最后比学号 }
- P139 例 9-7 代码 6,7 行应为:@Fее_cle6418
if(a.x.length() != b.x.length()) return a.x.length() > b.x.length();
- P248 例 17-6 详见 https://www.luogu.com.cn/paste/fh6n4mz1 @ProjectWTA
- P313 公式第 4 行应为
=\frac{1}{2}[\frac{1}{6}n(n+1)(2n+1)+\frac{1}{2}n(n+1)] 。自己发现
小错误
这类错误包括错别字或者语病、笔误,不影响意思,读者不一定可以意识到这些错误。
- P11,第二段
使用第6行的宏定义的方法
改为使用 #define 宏定义的方法
- P11,第四段,
和下画线(_)
应为和下划线(_)
。@Fее_cle6418 - P13,习题1-2,
(两个下画线)
应为(两个下划线)
。@Fее_cle6418 - P16,表格2-1,第二行第三列应该是
-128~127
,不是~128~127
;第六行第三列应该是0~2^{64}-1
,不是0~2^{24}-1
;@hy1089knigh @Roy_king - P40,例3-7
小于18.5kg
应为小于18.5kg·m^{-2}
,后两点也是这样的。 @吴晗 - P45,例3-12
前面8位
等 3 处改为9位
@Foryou - P45,例3-12 代码第 13 行
print
应为printf
。@uniqueharry - P52,例4-5分析第3段
产生一个0到RAND_MAX的函数
应改为产生一个0到RAND_MAX的整数
@Wu_while - P54 表4-5 外层循环行为并没有用粗体表示。以及,表头的
j<n-i+1?
应当为j<=n-i+1?
@Fее_cle6418 及 自己发现 - P85,例6-2:分析中
转换为0到26的数字
" 应为转换为0到25的数字
。@桑塔露琪亚 - P90 例6-7分析第3段,将其变成 "ak" 应为 将其变成 " ak "(前后少了空格)@Fее_cle6418
- P95,小提示蓝框,第三行的
(第6行)
应为(第7行)
。@raymie - P101,例7-1,
ans()函数
应为ans 变量
。@Fее_cle6418 - P108,例7-9,代码第2行
#define MAXN 1024
应为#include<string>
。@eric888 - P154,图11-3 最上面的楼梯应该是f[i]不是f[i-2]。@mamingxiao
- P155,例11-1,代码倒数第二行,
f.print()
改为f[N].print()
。@hanyy213 - P164,第一段第 2 行,
和经验,平在考场上放平心态
应为和经验,在考场上放平心态
。自己发现 - P164,第二段第 2 行,
即使目关短浅
应为即使目光短浅
。 @Fее_cle6418 - P173,习题12-8,
每个小组的顺序必须实力值连续且互不相同
应为每个小组中,成员的实力值排序后,必须是连续且互不相同的整数数列。
- P177,第一行,
左闭左开
,应为左闭右开
。@Fее_cle6418 - P196,例14-5,第三段,
刚好可以使用深度优先搜索
应为刚好可以使用广度优先搜索
。自己发现 - P201,习题14-8,规则中,
A_1->B_1, A_1->B_1
应为A_1->B_1, A_2->B_2
。@Laofei - P208,例15-4 代码第 12 和第 18 行
print
应为printf
。@Laofei - P213,例15-8 最后的 queue 的用法中第 6) 和 7)
s
改为q
。@wzmzmhk - P237,习题16-8
ASCⅡ
应为ASCII
。 - P258,例18-3
(Breadth First Search, DFS)
应为(Breadth First Search, BFS)
。@houpingze - P262,例18-6 第三段
八边形为出度为 0 的点
应为六边形为出度为 0 的点
@Fее_cle6418 - P264,习题18-6,第二行,
m(n<=10^5)
应为m(m<=10^5)
。@Fее_cle6418 - P285,前面的程序的第 5 行 的输入好像少了个分号,也就是
cin >> n >> m;
@洪荒少女_Autumn - P290,例21-3 的题目名称应为
找循环节
而不是找寻环节
@Fее_cle6418 - P308,第2行
errer
应该为error
@钱柯滨 - P312,例B-1 在洛谷题库中编号为 P5745 而不是 P5475 @Fее_cle6418
你谷人均列文虎克!