一、數學推導法
經過一系列推導發現每一段長度為3時,乘積最大。
時間複雜度 o(1),空間複雜度 o(1)
class solution
}
二、貪心演算法本質上和數學推導相同,當剩餘長度大於5時每段都切成3,當切到4時,4的最優解是2*2即不切n小於4:返回n-1;n等於4:返回4;
n大於4時:繼續切割成長度為3的小段;
class solution
return ans*n; //n為1,2,3}}
三、動態規劃時間複雜度o(n*n),空間複雜度o(n)
class solution
return dp[n];}}
題目描述
給你一根長度為 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。
答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。
劍指 Offer 14 I 剪繩子
問題 給你一根長度為 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。示例...
劍指 Offer 14 I 剪繩子
劍指 offer 14 i.剪繩子 給你一根長度為 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的三段,...
劍指 Offer 14 I 剪繩子
從題目中可以看出,有最優子結構,可以聯想到動態規劃,其遞迴樹如下 可以看出,具有很多重疊子問題。1 記憶化搜尋 2 class solution 10int breakinteger int n 21 memo n res 22return memo n 2324 25 public 26 int ...