【发布时间】:2011-07-27 07:26:37
【问题描述】:
在Introduction to Algorithms(CLRS),Cormen 等人。讨论解决切杆问题如下(第369页)
EXTENDED-BOTTOM-UP-CUT-ROD(p, n)
let r[0...n] and s[0....n] be new arrays
r[0] = 0
for j = 1 to n:
q = -infinity
for i = 1 to j:
if q < p[i] + r[j - i]: // (6)
q = p[i] + r[j - i]
s[j] = i
r[j] = q
return r and s
这里p[i] 是切割长度为 i 的杆的价格,r[i] 是切割长度为 i 的杆的收入,s[i] 为我们提供了第一块切割的最佳尺寸。
我的问题是关于将j 从1 迭代到n 的外循环以及从1 到n 的内循环i。
在第 6 行,我们将 q(迄今为止获得的最大收入)与 r[j - i](上一次削减期间获得的最大收入)进行比较。
当j = 1 and i = 1 时,它似乎很好,但是j = 1 and i = 2 的内部循环的下一次迭代不会r[j - i] be r[1 - 2] = r[-1]?
我不确定负索引在这里是否有意义。这是 CLRS 中的错字还是我在这里遗漏了什么?
我想你们中的一些人不知道切割杆的问题是什么,这里是example。
【问题讨论】:
标签: algorithm language-agnostic dynamic-programming