问题:现有一根长度为N的绳子,需要你剪成M段,使M段的乘积最大。(其中M、N都为整数,剪成的每段长度也为整数,N已知,M未知)
例如 绳子长度N=8 剪成M=3,数值为别为2,3,3,则乘积最大为 2*3*3=18。
当我们遇到一个大规模问题时,总是习惯把问题的规模变小,这样便于分析讨论。
我们从最简单的情况进行分析:
当绳子的长度N=1时,我们至少需要剪绳子一次,这时乘积为0;
当绳子的长度为N=2时,剪一次后绳子的两段长度为分别为1、1,这时乘积为1*1=1;
当绳子的长度为N=3时,我们对绳子有两种方式,其一为剪成三段,它们的长度分别为1、1、1,乘积为1*1*1=1;其二为剪成两段,它们的长度分别为1、2,乘积为1*2=2,则最终乘积取这两种方式中的最大值为max(1*1*1,1*2)。
当绳子的长度为N=4时,我们对绳子有三种方式,其一为剪成四段,它们的长度分