免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2177 | 回复: 4
打印 上一主题 下一主题

[算法] 《编程之美——微软技术面试心得》第二刷勘误 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-13 16:53 |只看该作者 |倒序浏览
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

[url]http://www.cnblogs.com/bvbook/archive/2008/07/24/1250451.html[/url]

[[i] 本帖最后由 holly2008 于 2008-11-19 09:51 编辑 [/i]]

编程之美-封面.JPG (11.48 KB, 下载次数: 41)

编程之美-封面.JPG

论坛徽章:
0
2 [报告]
发表于 2008-10-13 16:55 |只看该作者
有些错误很低级啊,书我买了,可惜没看出一个错误来

论坛徽章:
0
3 [报告]
发表于 2008-10-13 21:41 |只看该作者
楼上的还是看的不仔细啊

论坛徽章:
0
4 [报告]
发表于 2008-10-17 15:39 |只看该作者

欢迎大家补充

欢迎继续补充勘误,谢谢

论坛徽章:
0
5 [报告]
发表于 2008-11-19 09:53 |只看该作者

勘误继续补充

14. 第139页,倒数第14行(感谢:网友1229david)
原文:“每个元素h,它的父亲结点是h[i/2],儿子结点是是h[2*i+1]和h[2*i+2]。”
改为:“每个元素h,它的父亲结点是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[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[v] = true;
}

18. 代码清单3-1(感谢:网友朱静)
原文:
     if(strstr(src, des) == 0)
     {
          return (true);
     }

修改:
     if(strstr(src,des)!=NULL)
     {
          return (true);
     }

[ 本帖最后由 holly2008 于 2008-11-19 09:59 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP