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