1. 第7页,第2行
原文:不过我们还是不能简单地将n=60000000
修订:不过我们还是不能简单地将n=960000000
2. 第16页,第13行
原文:10100000>>4=00000101
修订:10100000>>4=00001010
3. 第19页,倒数第4行
原文:if(i.a % 3 == i.b%3)
修订:if(i.a % 3 != i.b%3)
4. 第9页
原文:代码清单1-3
static void MakeUsage(float level)
{
PerformanceCounter p = new PerformanceCounter("Processor","% Processor
Time", "_Total");
while(true)
{
if(p.NextValue() > level)
System.Threading.Thread.Sleep(10);
}
修订为:
static void MakeUsage(float level)
{
PerformanceCounter p = new PerformanceCounter("Processor",
"%Processor Time", "_Total");
if(p==NULL)
{
Return;
}
while(true)
{
if(p.NextValue() > level)
System.Threading.Thread.Sleep(10);
}
5. 第19页,代码清单1-7
原文:
unsigned char a:4;
unsigned char b:4;
} i;
for(i.a = 1; i.a <= 9; i.a++)
for(i.b = 1; i.b <= 9; i.b++)
if(i.a % 3 == i.b % 3)
printf(“A = %d, B = %d\n”, i.a, i.b);
修订为:
unsigned char a:4;
unsigned char b:4;
} i;
for(i.a = 1; i.a <= 9; i.a++)
for(i.b = 1; i.b <= 9; i.b++)
if(i.a % 3!= i.b % 3)
printf(“A = %d, B = %d\n”, i.a, i.b);
6. 第23页,代码清单1-8中11-15行:
原文:
{
m_nCakeCnt = 0;
m_nMaxSwap = 0;
修订为:
{
m_nCakeCnt = 0;
m_nMaxSwap = 0;
}
~CPrefixSorting()
{
if( m_CakeArray != NULL )
{
delete m_CakeArray;
}
if( m_SwapArray != NULL )
{
delete m_SwapArray;
}
if( m_ReverseCakeArray != NULL )
{
delete m_ReverseCakeArray;
}
if( m_ReverseCakeArraySwap != NULL )
{
delete m_ReverseCakeArraySwap;
}
7. 第24页,第10行
原文:m_nCakeCnt = n;
修订:m_nCakeCnt = nCakeCnt;
8. 第24页,第22行
原文:m_SwapArray = new int[m_nMaxSwap];
修订:m_SwapArray = new int[m_nMaxSwap + 1];
9. 第27页,第12行
原文:nEstimate = LowerBound(m_tArr, m_n);
修订:nEstimate = LowerBound(m_ReverseCakeArray, m_n);
10. 第27页,第17行
原文:在到达m_tArr状态之前,我们已经翻转了step次
修订:在到达m_ReverseCakeArray状态之前,我们已经翻转了step次
11. 第32页,第10行~第11行(即第4段):
原文:根据题意,只要是不同卷的书组合起来就能享受折扣,至于具体是哪几卷,并不要求。因此,就可以不用考虑其他可能比如(Y1-1, Y2-1, Y3-1, Y4, Y5-1)。
修订:根据题意,不同卷的书组合起来才能享受折扣,至于具体是哪几卷,并没有要求。因为(Y1-1, Y2-1, Y3-1, Y4-1, Y5)能够保证在选择当前折扣情况下,剩下的书种类最多,它比其他组合都好。我们不用再考虑其他可能,如(Y1-1, Y2-1, Y3-1, Y4, Y5-1)。
12. 第34页,倒数第5行
原文:
假设这样的分法存在,那么就可以按照小于10的情况考虑求解。如果要买的书为(Y1, Y2, Y3, Y4, Y5)(其中Y1>=Y2>=Y3>=Y4>=Y5),贪心策略建议我们买Y5本五卷的,Y4-Y5本四卷,Y3-Y4本三卷,Y2-Y3本两卷和Y1-Y2本一卷。由于贪心策略的反例,我们把K本五卷和K本三卷重新组合成2×K本四卷(K = min{Y5, Y3-Y4})。结果就是我们买Y5-K本五卷的,Y4-Y5本四卷,Y3-Y4-K本三卷,Y2-Y3本两卷和Y1-Y2本一卷(K = min{Y5, Y3-Y4})。
修订:
假设这样的分法存在,那么就可以按照小于10的情况考虑求解。如果要买的书为(Y1, Y2, Y3, Y4, Y5)(其中Y1>=Y2>=Y3>=Y4>=Y5),贪心策略建议我们买Y5本五卷的,Y4-Y5本四卷,Y3-Y4本三卷,Y2-Y3本两卷和Y1-Y2本一卷。由于贪心策略的反例,我们把K本五卷和K本三卷重新组合成2×K本四卷(K = min{Y5, Y3-Y4})。结果就是我们买Y5-K本五卷的,Y4-Y5+2K本四卷,Y3-Y4-K本三卷,Y2-Y3本两卷和Y1-Y2本一卷(K = min{Y5, Y3-Y4})。
13. 第36页的第5行~第6行:
原文:假设有n个ID,这个解法占用的时间复杂度为O(N)
应为:假设有N个ID,且ID的取值在0-(N-1)之间,这个解法占用的时间复杂度为O(N)
14. 第36页的倒数第8行~第10行:
原文:
具体方法如下:遍历列表,利用变长数组记下每个ID出现的次数,每次遇见一个ID,就向变长数组中增加一个元素;如果这个ID出现的次数为2,那么就从变长数组中删除这个ID,最后变长数组中剩下的ID就是我们想要的结果。
应为:
具体方法如下:遍历列表,利用哈希表记下每个ID出现的次数,每次遇见一个ID,就向哈希表中增加一个元素;如果这个ID出现的次数为2,那么就从哈希表中删除这个ID,最后哈希表中剩下的ID就是我们想要的结果。
15. 第41页,第6行
原文:最大数量指如果仅买某种饮料的最大可能数量,比如对于第i中饮料Ci=V/Vi。
修订:最大数量指STC存货的上限。
16. 第41页,第13行
原文:因此,Opt(V, n)就是我们要求的值。
修订:因此,Opt(V,0)就是我们要求的值
17. 第41页,倒数第10行
原文:用Opt(V', i)表示从第i, i+1, i+2,…, n-1, n种饮料中,算出总量为V'的方案中满意度之和的最大值。
修订:用Opt(V', i)表示从第i, i+1, i+2,…, n-1种饮料中,算出总量为V'的方案中满意度之和的最大值。
18. 第41页,倒数第8行
原文:Opt (V', i) = max { k* Hi + Opt(V' - Vi * k, i-1)}
修订:Opt (V', i) = max { k* Hi + Opt(V' - Vi * k, i+1