劍指offer 67 剪繩子

2021-10-10 09:47:06 字數 728 閱讀 3002

給你一根長度為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

solution

:def

cutrope

(self, number)

:# write code here

ld =

for z in

range(2

, number +1)

: max_mulity =

0for m in

range(1

,int

(z /2)

+1):

n = z - m

tmp_arr =

[ld[m]

* ld[n]

, m * ld[n]

, ld[m]

* n, m * n]

for t in tmp_arr:

if t > max_mulity:

max_mulity = t

ld[z]

= max_mulity

return ld[number]

o(n*(1+n/2)/2*4) 約等於 o(n^2)

劍指offer67 剪繩子

給你一根長度為n的繩子,請把繩子剪成整數長的m段 m n都是整數,n 1並且m 1,m n 每段繩子的長度記為k 1 k m 請問k 1 x xk m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18。第一次做這個題的時候其實走入了歧途...

劍指offer67 剪繩子

給你一根長度為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 67剪繩子(Python)

題目 給你一根長度為n的繩子,請把繩子剪成整數長的m段 m n都是整數,n 1並且m 1,m n 每段繩子的長度記為k 1 k m 請問k 1 x xk m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18。思路 第一種方法是暴力遞迴法...