题目描述
把一根绳子剪成多段,并且使得每段的长度乘积最大。
public class cutRope14 {
/**
* ycy
* 题目描述:
* 把一根绳子剪成多段,并且使得每段的长度乘积最大。
* 解题思路:
* 根据推理常理,要尽可能分解出多个长度为3的子绳子,并且最后不要出现1,只能出现2和3;
*
*/
public static int breakLength(int n){ //简单分解为多个3,2的
if(n<=3) return n;
int count1 = n/3;
if(n-count1*3 == 1){
count1--;
}
int count2 = (n-count1*3)/2;
return (int) ((Math.pow(3, count1))*(Math.pow(2, count2)));
}
public static int DynamicbreakLength(int n){ //动态规划
int dbl[] = new int[n+1];
dbl[1] = 1;
for(int i=0;i<=n;i++){
for(int j=0;j<i;j+&