题解 | #剪绳子#
剪绳子
https://www.nowcoder.com/practice/57d85990ba5b440ab888fc72b0751bf8
public class Solution {
public int cutRope(int target) {
//因为绳长<=4的时候,取最大值就是它的本身
int dp[]=new int[target+1];
dp[1]=1;
dp[2]=2;
dp[3]=3;
dp[4]=4;
//从第五个开始遍历
for(int i=5;i<=target;i++){
//可以分成两大部分,一部分就是已保存的可以剪出来最大乘积,这个不管细分多少,这个部分已经包括了所有情况的最大乘积。另一部分就是这个最大乘积的剩余长度与这个乘积相乘。最后取当前最大乘积值
for(int j=1;j<i;j++){
dp[i]=Math.max(dp[i],j*dp[i-j]);
}
}
return dp[target];
}
}


