1. 第 80 页,第2行 原文: a – b = 1 改为: b – a = 1 2. 第133页,第1行 原文:f(10n-1)=n*10n-1 改为:f(10n-1)=n*10n-1 3. 第147页,第7行 原文:f(x,y)=f(y, y%x) (y>0) 改为:f(x,y)=f(y, x%y) (x≥y>0) 4. 第153页,第5行 原文:再引入一个变量j, j=X%N 改为:再引入一个变量J, J=X%N 5. 第227页,代码清单3-8中的第6行 原文: int nAbstractBegin = 0; //目标摘要的结束地址 改为: int nAbstractEnd = 0; //目标摘要的结束地址 6. 第288页,代码清单4-3中的倒数第6行 原文: if (Min currentMin) 改为: if (Min > currentMin) 》》》》》》》》勘误补充》》》》》》》》 7. 第221页,代码清单3-6倒数第9行(感谢:网友Azuryy ) 原文: int t1 = CalculateStringDistance(strA, pABegin, pAEnd, strB, pBBegin + 1, pBEnd); int t1 = CalculateStringDistance(strA, pABegin + 1, pAEnd, strB,pBBegin, pBEnd); int t1 = CalculateStringDistance(strA, pABegin + 1, pAEnd, strB,pBBegin + 1, pBEnd); return minValue(t1,t2,t3) + 1; 改为: int t1 = CalculateStringDistance(strA, pABegin, pAEnd, strB, pBBegin + 1, pBEnd); int t2 = CalculateStringDistance(strA, pABegin + 1, pAEnd, strB,pBBegin, pBEnd); int t3 = CalculateStringDistance(strA, pABegin + 1, pAEnd, strB,pBBegin + 1, pBEnd); return minValue(t1,t2,t3) + 1; 8. 第253页,代码清单3-16倒数第10行(感谢:网友Azuryy ) 原文: If (!vec[cur] -> lchild) //当前访问节点的左节点不为空则压入 vec.push_back(ver[cur] -> lchild); If (!vec[cur] -> rchild) //当前访问节点的右节点不为空则压入 //注意左右节点的访问顺序不能颠倒 改为: If (vec[cur] -> lchild) //当前访问节点的左节点不为空则压入 vec.push_back(ver[cur] -> lchild); If (vec[cur] -> rchild) //当前访问节点的右节点不为空则压入 //注意左右节点的访问顺序不能颠倒 9. 第103页,代码清单1-27(感谢:网友jinlingmin0624) 原文: S[i] U = Fork(f(i),f(i - x)); 改为: S[i] U = Fork(f(x),f(i - x));
10. 第106页,第4行(感谢:网友jinlingmin0624) 原文:BlockSets[7][4][4][4] 改为:BlockSets[7][4] 11. 第107页,倒数第2行(感谢:网友jinlingmin0624) 原文:积木块将下落到的高度为(N-3, N-5-1)=N-6 说明:标红处的减号有问题,与其他几个减号不一致 12. 第107页,最后一行(感谢:网友jinlingmin0624) 原文:留在位移(3,M-6)的位置。 改为:留在位移(3,N-6)的位置。 13. 第131页,第4行(感谢:网友lbc122) 原文:f(23)=个位出现1的个数+十位出现1的个数+百位出现1的个数=13+20+24=57 改为:f(123)=个位出现1的个数+十位出现1的个数+百位出现1的个数=13+20+24=57 14. 第139页,倒数第14行(感谢:网友1229david) 原文:“每个元素h[i],它的父亲结点是h[i/2],儿子结点是是h[2*i+1]和h[2*i+2]。” 改为:“每个元素h[i],它的父亲结点是h[(i-1)/2],儿子结点是是h[2*i+1]和h[2*i+2]。” 15. 第149页(感谢:网友朱静) 原文: f(42,30)=f(1010102, 111102) = 2 * f(101012, 11112) = 2 * f(11112, 1102) = 2 * f(11112, 112) = 2 * f(11002, 112) = 2 * f(112,112) = 2 * f(02,112) = 2 * 112 = 6 改为: f(42,30)=f(1010102, 111102) = 2 * f(101012, 11112) = 2 * f(11112, 1102) = 2 * f(11112, 112) = 2 * f(112,11002) = 2 * f(112,112) = 2 * f(112,02) = 2 * 112 = 6 16. 第173页,倒数第5行(感谢:网友jinlingmin0624) 原文:先排序再二分查找固然可以将时间从O(N2)缩短到O(Log2N),但是还有更快的查找方法:hash表。 修改:先排序再二分查找固然可以将时间从O(N2)缩短到O(N*log2N),但是还有更快的查找方法:hash表。 17. 第200页,代码清单2-37(感谢:网友chuncl) 原文: for(k = 1; k <= 2 * n; k++) { for(i = 1; (i <= k && i <= n); i++) for(v = 1; v <= Sum / 2; v++) if(v >= arr[k] && isOK[i-1][v-arr[k]]) isOK[i][v] = true; } 修改: for(k = 1; k <= 2 * n; k++) { for(i = min(k, n); i>= 1; i--) for(v = 1; v <= Sum / 2; v++) if(v >= arr[k] && isOK[i-1][v-arr[k]]) isOK[i][v] = true; } 18. 代码清单3-1(感谢:网友朱静) 原文: if(strstr(src, des) == 0) { return (true); } 修改: if(strstr(src,des)!=NULL) { return (true); } (该书第1刷勘误网址:http://blog.csdn.net/bvbook/archive/2008/05/04/2378778.aspx)