class Solution {
public int integerBreak(int n) {
int[] dp = new int[n + 1];
if(n == 2) return 1;
if(n == 3) return 2;
dp[1] = 1;
dp[2] = 2;
dp[3] = 3;
for(int i = 4; i <= n;i++){
for(int j = 1;j <= i/2;j++){
dp[i] = Math.max(dp[i],dp[i - j]*dp[j]);
}
}
return dp[n];
}
}
每个数都取当前最大值,那么到了n,也是最大值。1,2,3只是数字代表将n拆成了,1,2,3而不是2的最大值1,3的最大值2。