[DP] Rod-cutting problem

给一个长度为 n 的杆子,切成小段卖出去,价格根据小段的长度不同而不同。下面是一个例子

我们要通过切成小段卖出尽可能高的总价钱。问题是:How to decompose the problem?

[DP] Rod-cutting problem_第1张图片

Decomposition 的第一步是:第一刀切在哪?可以切在最左边(等于整根卖出去);可以切在位置1,位置2,。。。

关键的一点是,刀切下去后,左半段就不再切了,继续切右半段。切右半段就变成了一个subproblem。

Naive Recursion:

[DP] Rod-cutting problem_第2张图片

 

 

Top-down implementation:

[DP] Rod-cutting problem_第3张图片

Bottom-up implementation: 不容易构想,变量 j 是 subproblem's size,从1递增到n,变量 i 用来把每个subproblem 拆分成更小的subproblem,而根据我们这种计算的顺序,当计算 size = j 的时候,< j 的 subproblem 已经计算完毕了。

[DP] Rod-cutting problem_第4张图片

你可能感兴趣的:(cut)