剪绳子
给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
假定绳子长度大于4,那么可以得到一个表
绳子长度 | 最大乘积时绳子段长 |
---|---|
5 | 2,3 |
6 | 3,3 |
7 | 2,2,3 |
8 | 2,3,3 |
9 | 3,3,3 |
10 | 2,2,3,3 |
由表格可以看出,要想得到最大乘积,就要将绳子竟可能的分成2,3长度的小段(4就等于2*2)
那么就可以用递归的方法来求出最大乘积
int cutRope(int);
void