这是“算法简介”dp章节
中的一个问题我们必须削减长钢以获得最大利益
第一行是长度,第二行是价格。
def cut_rod_mem(n, p):
m = [0]
for i in range(10):
m.append(-1)
def inner(n, p):
if m[n]!=-1:
return m[n]
for i in range(1, n + 1):
t = p[i] + inner(n - i, p)
if t > m[n]:
m[n] = t
return m[n]
return inner(n,p)
如果此列表超出范围,我感到很困惑?
答案 0 :(得分:0)
它不会超出范围,因为数组的元素是从0 to n-1
索引的,即在上面的情况0 to 9
中。在函数内部,for循环来自1 to n
,因此内部(n - i, p)
在范围内,值为inner(9, p)
..... inner(0, p)
。