給你一根長度為n的繩子,請把繩子剪成整數長的m段(m、n都是整數,n>1並且m>1,m<=n),每段繩子的長度記為k[1],...,k[m]。請問k[1]x...xk[m]可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2、3、3的三段,此時得到的最大乘積是18。
應用動態規劃求解問題的特點:
貪婪演算法和動態規劃不一樣。應用貪婪演算法解決問題時,每一步都可以做出乙個貪婪的選擇,基於這個選擇,確定能夠得到最優解。
思路1:動態規劃。(時間複雜度:o(n^2), 空間複雜度:o(n))
思路2:貪婪演算法。(時間複雜度:o(1),空間複雜度:o(1))
按照如下的策略剪繩子,則得到的各段繩子的長度的乘積最大:
也就是
publicclass
solution else
if (target % 3 == 1)
else}}
劍指offer No 67 剪繩子
給你一根長度為n的繩子,請把繩子剪成整數長的m段 m n都是整數,n 1並且m 1 每段繩子的長度記為k 0 k 1 k m 請問k 0 xk 1 x.xk m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18。輸入乙個數n,意義見題面...
《劍指offer》JZ67剪繩子
jz67 給你一根長度為n的繩子,請把繩子剪成整數長的m段 m n都是整數,n 1並且m 1 每段繩子的長度記為k 0 k 1 k m 請問k 0 xk 1 x.xk m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18。解析 jz67...
劍指offer 67 剪繩子
給你一根長度為n的繩子,請把繩子剪成整數長的m段 m n都是整數,n 1並且m 1,m n 每段繩子的長度記為k 1 k m 請問k 1 x xk m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18。2 n 60 class solu...