算法导论第15章

第三版的CLRS改写了15.1.用一个rod cut问题代替了assembly-line问题。不过总觉得还没第2版讲得好啊。

15.1-1 Print-Station(l*, n). 如果n==2, print l_2[l*], 否则的话Print-Station(l_n[l*], n-1) print 'n station, l_n[l*] '

15.1-2 Suppose \(r_1(j+1)=r_2(j+1)=2^{n-j-1}\)。带入公式15.9既得。

15.1-3 all \(f_i[j]\) . 这个\(1+2+4+....2^{n-1}=2^n-1\) 乘2既得

15.1-4 如果只想知道f*的话,那么需要用2n存储的f_1和f_2可以改成只要4个空间存储。a_1,a_2,b_1,b_2。假设a_1,a_2放了f_1[n-1],f_2[n-1],那么在b_1和b_2可以用来计算f_1[n]和f_2[n]。然后交换一下方向就好了。存储l_1和l_2不变还是2n-2。总共2n+2.

15.1-5 这个问题也就是l_1和l_2只能是1,1和1,2和2,2。因为上一个子问题得到的两个f_1[n-1]和f_2[n-1]记做a和b的话,那么当前阶段就要比较a,b,a+c,b+d。如果2,1出现的话,那么a>b+d,b>a+c。a-b>d, a-b<-c。得到-c>d。但是c和d都是正数,所以Canty错了。

posted @ 2012-10-17 12:18  QED  阅读(304)  评论(0编辑  收藏  举报