给你一根长度为 n绳子,请把绳子剪成 m段(m、n都是整数,2≤n≤58并且 m≥2)。
每段的绳子的长度记为 k[1]、k[2]、……、k[m]
k[1]k[2]…k[m] 可能的最大乘积是多少?
例如当绳子的长度是 18
思路:大佬的证明
int maxProductAfterCutting(int length){
if(length<=2) return 1;
if(length==3) return 2;
int n=1,num=0;
if(length==4) return 4;
if(length%3==2)
{
n=2;
num=(length-2)/3;
}
else if(length%3==1)
{
n=4;
num=(length-4)/3;
}
else
{
n=1;
num=length/3;
}
for(int i=0;i<num;i++)
{
n*=3;
}
return n;
}
时,我们把它剪成长度分别为 2、3、3的三段,此时得到最大的乘积 18。