在 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 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告