牛客 剪繩子(66題)

2021-10-06 19:30:15 字數 1084 閱讀 3965

本題主要考察的思想是:貪心或者動態規劃,這兩種演算法思想感覺還是比較相似的,但是這一類的題主要是找到規律吧

題目描述

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

輸出描述:

輸出答案。

示例1輸入複製8

輸出複製

18思路:

n=2,可以剪去1刀 max 1,

n=3,可以剪去2刀 max 2,

n=4的時候了?

n=4的時候最大可以剪成4段,1、3,2、2 max 13 or 22 的最大值

n=5的時候可以這樣剪去 1、4, 2、3, 3、2, 4,1

…可以這樣理解,n=5時,分別計算1和4乘積,2和3的乘積(後面重複了),然後求這個值的最大值作為n=5的最優解

核心 f(i)*f(n-i)

實現**:

function

cutrope

(number)

if(number ===3)

let dp =

; dp.

push

(undefined)

; dp.

push(1

);dp.

push(2

);dp.

push(3

);let max =0;

for(

let i =

4; i <= number; i++

) dp.

push

(max);}

return dp.

pop();

}

牛客剪繩子(暴力列舉)

首先假設繩子為 2 那麼最大乘積為 1 2 繩子為 3 乘積最大 1 3 當繩子長為4開始發現規律 4 2 2 5 2 3 6 3 3 7 2 2 3 8 2 3 3 9 3 3 10 2 2 3 3 11 2 3 3 3 12 3 3 3 3 以此類推我們可以看出 最大值都是有2和3組成的,那怎麼...

演算法題 剪繩子

題目描述 給你一根長度為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 條繩子,每條繩子的長度已知且均為正整數。繩子可以以任意正整數長度切割,但不可以連線。現在要從這些繩子中切割出 m 條長度相同的繩段,求繩段的最大長度是多少。輸入 第一行是乙個不超過 100 的正整數 n,第二行是 n 個不超過 106 的正整數,表示每條繩子的長度,第三行是乙個不超...