整数拆分
1、给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回可以获得的最大乘积。
//使用记忆化搜索(剪枝):memo[i]表示对i进行分割(至少分割两部分),可以获得的最大乘积
int[] memo;
private int max3(int a,int b,int c){
return Math.max(a,Math.max(b,c));
}
/**
* 将n进行分割(至少分隔成两部分),可以获得最大乘积
* @param n
* @return
*/
private int breakInteger(int n){
//递归的终止条件:传入的n为1,无法进行分割
if(n == 1){
return 1;
}
if