【LeetCode & 劍指offer刷題】動態規劃與貪婪法題2:14 剪繩子
阿新 • • 發佈:2019-01-05
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...)
14 剪繩子
題目:給你一根長度為n的繩子,請把繩子剪成m段 (m和n都是整數,n>1並且m>1) 每段繩子的長度記為k[0],k[1],...,k[m].請問k[0]*k[1]*...*k[m-1]可能的最大乘積是多少? 例如,當繩子的長度為8時,我們把它剪成長度分別為2,3,3的三段,此時得到的最大乘積是18. 思路:首先定義函式f(n)為把長度為n的繩子剪成若干段後各段長度乘積的最大值。在剪第一刀時,我們有n-1種選擇,也就是說第一段繩子的可能長度分別為1,2,3.....,n-1。因此f(n)=max(f(i)*f(n-i)),其中i = 1,2,3...n/2。