演算法題 剪繩子

2021-10-05 17:57:40 字數 981 閱讀 5403

題目描述

給你一根長度為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,意義見題面。(2 <= n <= 60)

輸出描述

輸出答案。

示例

輸入

8

輸出

18

分析

顯然,當k[0]=k[1]=,=k[m]時乘積最大,設k[0]=x,那麼乘積可以用下式表示

f(x)=(x)^(n/x)

求導得:在x=e時取得最大值,e≈2.718,是自然對數。

又因為x的取值只能為整數,且f(3)>f(2),所以,當n>3時,將n盡可能地分割為3的和時,乘積最大。 當n>3時,有三種情況,即n%3=0, n%3=1, n%3==2。則:

**(已ac)

public

class

solution

else

if(target %3==

1)else

return2*

(int

)math.

pow(

3, target/3)

;// target % 3 == 2

}}

演算法題 剪繩子(貪心演算法)

題目描述 給你一根長度為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。輸入描述 輸入...

剪繩子 演算法 剪繩子 (劍指offer第十三題)

題目 給你一根長度為 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。答案...

剪繩子 演算法 424,劍指 Offer 剪繩子

給你一根長度為 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。示例 1 ...