解题思路:
拆成的数几乎相等时,结果最大
i 拆分为 j *( i - j )
j * (i - j)拆成两个
j * dp[i - j])拆成多个
class Solution {
public int integerBreak(int n) {
int[] dp = new int[n + 1];
dp[2] = 1;
for (int i = 3; i <= n; i++) {
for (int j = 1; j < i; j++) {
dp[i] = Math.max(Math.max(j * (i - j), j * dp[i - j]), dp[i]);
}
}
return dp[n];
}
}