Skip to content
On this page

整数拆分

TIP

给定一个正整数 n ,将其拆分为 k正整数 的和( k >= 2 ),并使这些整数的乘积最大化。

返回 你可以获得的最大乘积

思路

动规五部曲

  1. 确定dp数组以及下标的含义:分拆数字i,可以得到的最大乘积为dp[i]
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组
js
var integerBreak = function(n) {
    let dp = []
    dp[0] = 0
    dp[1] = 1
    dp[2] = 1
    for(let i=3;i<=n;i++){
         dp[i] = 0
        for(let j=1;j<i;j++){
            dp[i] = Math.max(dp[i], Math.max((i - j) * j, dp[i - j] * j))
        }
    }
    return dp[n]
};