一、题目描述
二、解题思路
动态规划:用dp[i]
代表绳子长度为i
时所能得到的最大乘积,用j
表示将绳子切出长度为j的一段绳子,剩下的长度则为i-j,因为dp[i-j]*dp[j]
和(i-j)*j
的大小不确定,因此每一次的内循环都要找出大的一方并存入对应的dp[i]
中。
三、代码实现
var cuttingRope = function(n) {
let dp = new Array(n+1).fill(1)
for(let i=3;i<n+1;i++){
for(let j=1;j<i;j++){
dp[i] = Math.max(dp[i],dp[i-j]*j,j*(i-j))
}
}
return dp[n]
};