关于剪绳子的题目,第一步要想到为拿到8米长绳子的最大乘积,记为f(8),使用贪心算法,我们认为f(8)的最大值在f(n)*f(8-n)中诞生,所以去遍历数组得到max值。
public class Solution {
public int cutRope(int target) {
if(target==2){return 1;}
if(target==3){return 2;}
int [] rope = new int[target+1];
rope[0]=0;
rope[1]=1;
rope[2]=2;
rope[3]=3;
int temp = 0;
int max = 0;
for(int i=4;i<=target;i++){
for(int j=0;j<=i/2;j++){
temp = rope[j]*rope[i-j];
if(max<temp){max=temp;}
}
rope[i]=max;
}
return rope[target];
}
}
京公网安备 11010502036488号