题目描述:
剑指Offer的减绳子和LeetCode的整数拆分都是这种类型的题,我感觉挺难的,看了好久题解,才迷迷糊糊懂点。唉,太菜了。
public static int cutRope(int target){
//特殊的情况
if(target<=3)
return target-1;
int[] dp=new int[target+1];
dp[1]=1;
dp[2]=2;
dp[3]=3;
//dp[i]中储存的元素不能小于i本身,一直往后赋值
for (int i = 4; i <target+1; i++) {
//f(n) 等价于 max(1 * f(n - 1), 2 * f(n - 2), ..., (n - 1) * f(1))。
for (int j = 1; j <i ; j++) {
dp[i]=Math.max(dp[i],dp[i-j]*j);
}
}
return dp[target];
}