给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。
例如,给定 n = 2,返回1(2 = 1 + 1);给定 n = 10,返回36(10 = 3 + 3 + 4)。
注意:你可以假设 n 不小于2且不大于58。
思路
1 | 假设a[i]表示i对应最大乘积,已知a[0]~a[i],那么a[i+1]=(1+i;2+(i-1)...x+(i-x+1)..的最大的值)那么x+(i-x+1)的最大值如何求呢:取x*(i-x+1);a[x]*(i-x+1);x*a[i-x+1];a[x]*a[i-x+1]中的最大值; |
代码
1 | class Solution { |