一、题目
给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
二、动态规划分析
当前整数的最大值,是由拆分得到的正整数决定的,所以当前状态是由上一个状态推导而来,选用动态规划解决
(1)确定数组及下标含义
dp[i]:表示分拆数字 i ,可以得到的最大乘积 dp[i]
(2)确定递推公式
获得 dp[i]要么直接是(i-j)*j
要么:j*dp[i-j]
j 从1开始遍历到 i-1,所以对于 i 来说所有的情况都会遍历到在 (1,i-1)之间选择最大的 dp[i]
dp[i]=Math.max(dp[j] * (i - j), j * (i - j));
for (int j = 1