《编程之美》第2刷勘误
《编程之美》第2刷勘误
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, 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, 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)