您的位置:首页 > 其它

343. Integer Break

2018-03-13 23:24 429 查看
Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get.For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4).Note: You may assume that n is not less than 2 and not larger than 58.
方法一:回溯算法,时间复杂度很大,程序如下:class Solution {
private long maxProduct = 0, currentProduct = 1;
private int validSize = 0;
public int integerBreak(int n) {
backTracing(n, 1);
return (int)maxProduct;
}
public void backTracing(int n, int i){
if (i > 9||n < 0){
return;
}
if (n == 0&&validSize >= 2){
maxProduct = Math.max(maxProduct, currentProduct);
return;
}
for (int j = i; j <= 9; j ++){
currentProduct *= j;
validSize ++;
backTracing(n - j, j);
currentProduct /= j;
validSize --;
}
}
}方法二:因式分解,分解因子为2和3,原理及程序后续补上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: