本題主要考察的思想是:貪心或者動態規劃,這兩種演算法思想感覺還是比較相似的,但是這一類的題主要是找到規律吧題目描述
給你一根長度為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 的正整數,表示每條繩子的長度,第三行是乙個不超...