在 JavaScript 中分解整数以最大化乘积


问题

我们需要编写一个 JavaScript 函数,该函数传入一个整数 num 作为第一个也是唯一一个参数。

我们的函数应该将这些整数分解成至少两个块,当相加时得出总和整数 num,相乘时给出尽可能大的乘积。最后,我们的函数应该返回这个尽可能大的乘积。

例如,如果输入函数的数字是 -

const num = 10;

那么输出应该是 -

const output = 36;

输出解释

因为 10 可以分解成 3 + 3 + 4,相乘得出 36。

示例

代码如下 -

const num = 10;
const breakInt = (num = 2) => {
   const dp = new Array(num + 1).fill(0);
   dp[0] = 0;
   dp[1] = 1;
   for(let i = 2; i <= num; i++){
      for(let j = 1; 2*j <= i; j++){
         dp[i] = Math.max(dp[i], Math.max(j, dp[j]) * Math.max(i-j,
         dp[i-j]) );
      };
   };
   return dp[num];
};
console.log(breakInt(num));

输出

控制台中的输出是 -

36

更新于: 2021-03-19

86 次浏览

开启您的职业生涯

完成课程获得认证

开始
广告