leetcode 343. Integer Break #Medium
题目大意:给定一个大于1的正整数n,将n分解为至少2个正整数的和。怎样使分解所得数字之积最大,求出这个最大积
分析:先找下规律,以下分解积最大,7=2+2+3 ,8=2+3+3,9=3+3+3,10=2+2+3+3。即要尽量多分解出3,但是不能有1(2*2>3*1),代码如下:
class Solution {
public:
int integerBreak(int n) {
int r=1;
if(n<4)return n-1;
for(;n>2;n-=3,r*=3);
if(n==1)r=r/3*4;
else if(n==2) r*=2;
return r;
}
};