题目思路:呃,这是一种数学规律,让数字拆分成尽可能多的3相乘,如果剩下的数字<=4需要另做考虑,这点很容易得出,这样拆分的数字相乘的结果就是最大的。
代码
public int cuttingRope(int n) {
int []dp = {0, 1, 1, 2, 4};
if (n <= 4) {
return dp[n];
}
int number = 1;
while (n > 0) {
if (n > 4) {
number *= 3;
n -= 3;
} else {
number *= n;
n = 0;
}
}
return number;
}