带备忘的自顶向下法:
MEMOIZED-CUT-ROD(p,n)
let r[0..n]
for i=0 to n
r[i]=-65536
return MEMOIZED-CUT-ROD-AUX(p,n,r)
MEMOIZED-CUT-ROD-AUX(p,n,r)
if r[n]>=0
return r[n]
if n=0
q=0
else q=-65536
for i=1 to n
q=max(q,p[i]+MEMOIZED-CUT-ROD-AUX(p,n-i,r))
r[n]=q
return q
自低向上方法
Bottom-Up-Cut-Rod(p,n)
r[0]=0
for j=1 to n
q=-65536
for i=1 to j
q=max(q,p[i]+r[j-i])
r[j]=q
return r[n]