题目:
整数拆分
解题思路:
由观察法可知,3以内的整数拆成1和它本身减1时积最大。3以外的整数若能被3整除,拆成n/3个3时积最大。其余情况下找离它最近的并且与它奇偶性相同的能被3整除的数即可。
代码:
int integerBreak(int n){
if(n < 4)
return n-1;
if (n % 3 == 0)
return pow(3,n/3);
for (int m = 0 ; m < n ; m++)
if ((n - m) % 2 == n % 2 & (n - m) % 3 == 0)
return m×pow(3,(n-m)/3);
return n;
}
链接:
取巧法解题-leetcode