劍指 Offer 14- I. 剪繩子 JavaScript實現
劍指 Offer 14- I. 剪繩子 JavaScript實現
題目描述
給你一根長度為 n 的繩子,請把繩子剪成整數長度的 m 段(m、n都是整數,n>1並且m>1),每段繩子的長度記為 k[0],k[1]…k[m-1] 。請問 k[0]k[1]…*k[m-1] 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2、3、3的三段,此時得到的最大乘積是18。
var cuttingRope = function(n) {
var dp = new Array(n+1).fill(1);//對dp陣列初始化
for(let i=3 ; i<=n ; i++){//代表繩子長度的範圍
for(let j=1 ; j<i; j++){//代表切割的範圍
dp[i] = Math.max(dp[i],j*(i-j),j*dp[i-j]);
//比較三者中的最大值
}
}
return dp[n];//返回最大值
};
備註:
當對一個數進行分割時,j和i-j是兩部分,j*(i-j)的值也可能是最大的,例如 5 = 2 + 3 ,可知 3的切割因數乘積最大值為2,若不與 2*3 的結果進行比較,那麼將會返回錯誤的值,所以是三項進行比較。
相關文章
- 劍指offer | 55 - I. 二叉樹的深度二叉樹
- 劍指 Offer 56 - I. 陣列中數字出現的次數陣列
- 劍指offer-JavaScript版JavaScript
- python 實現 割繩子問題(劍指offer 14題) 動態規劃 或者貪心演算法Python動態規劃演算法
- 《劍指 Offer》棧實現佇列佇列
- 劍指offer解析-下(Java實現)Java
- 劍指offer解析-上(Java實現)Java
- 【劍指offer】樹的子結構
- 劍指 Offer 32 - I. 從上到下列印二叉樹(java解題)二叉樹Java
- 劍指offer-17:樹的子結構
- 劍指offer面試18 樹的子結構面試
- 劍指offer面試題(41-50)——java實現面試題Java
- 劍指 Offer 25. 合併兩個排序的連結串列 JavaScript實現排序JavaScript
- 【劍指offer】連續子陣列的最大和陣列
- 每日一題 - 劍指 Offer 53 - I. 在排序陣列中查詢數字 I每日一題排序陣列
- 【劍指offer】兩個棧實現一個佇列佇列
- 【劍指offer】兩個佇列實現一個棧佇列
- 劍指offer | 09. 用兩個棧實現佇列佇列
- 劍指offer-用兩個棧實現佇列-php佇列PHP
- 【劍指offer】左旋轉字串字串
- 【劍指offer】字串的排列字串
- 劍指Offer題解合集
- 劍指 Offer 42.連續子陣列的最大和陣列
- 劍指Offer-連續子陣列中的最大和陣列
- 劍指 offer(1) -- 陣列篇陣列
- Leetcode劍指offer(八)LeetCode
- 【劍指offer】【2】字串的空格字串
- 【劍指offer】字串轉整數字串
- 【劍指offer】字串的組合字串
- 劍指offer刷題記錄
- ✏️ JavaScript版 | 10大專題 | 劍指offer刷題筆記 ✏️JavaScript筆記
- 《劍指Offer》- 連續子陣列的最大和或最小和陣列
- 劍指 Offer 48. 最長不含重複字元的子字串字元字串
- 劍指offer-例題 連續子陣列的最大和陣列
- 劍指 Offer 38. 字串的排列字串
- 劍指Offer 表示數值的字串字串
- 劍指offer——重建二叉樹二叉樹
- 【劍指offer】二叉樹深度二叉樹