问题:现在已知有一个长度为n的切割杆,且1~n长度对应的价值存储在prices[n]数组中,将其进行若干次切割,求其达到的最大价值?
通过问题的叙述我们可以发现,和前一篇讲解的动态规划之二:剪绳子问题很相似,都属于动态规划的内容,因此我们就用动态规划的思想来解决问题。
现在使用形式化语言来描述问题规模的最大价值状态,即f(n)表示长度为n的切割杆的最大价值。prices[n]数组中存储对应长度为1~n的价值并且是随机的,也就是说prices[2]的价值并不比prices[1]的价值大。因此假设我们第一次切割的长度为i,其最大价值为f(i),剩余的切割杆的长度为n-i,其最大价值为f(n-i):
使用具体示例进行分析:
当n=0时,f(0)= 0;