DP解題 剪繩子

2021-09-13 19:19:19 字數 886 閱讀 8743

[dp解題] 剪繩子

【問題】給定一根長度為

n的繩子,請把繩子剪成m段(

m、n都是整數,

n>1

並且m>1

),每段繩子的長度記為

k[0],k[1],…,k[m]

。請問k[0]* k[1] * … *k[m]

可能的最大乘積是多少? 示例

1: 輸入:

8 輸出:

18

解釋:當繩子的長度是

8時,可以把它剪成長度分別為2、

3、3的三段,此時得到的最大乘積是18。

[演算法分析]

[演算法設計]

package com.bean.algorithmbasic;

public class cutropedemo

if (length == 2)

if (length == 3)

int max = 0;

int res = new int[length];

res[0] = 2;

res[1] = 3;

for (int i = 4; i <= length; i++) }}

max = res[length-2] ;

return max;

}public static void main(string args)

}

輸出結果:

result = 36

劍指Offer 剪繩子 和剪繩子

劍指offer 剪繩子 題目描述 給你一根長度為 n 的繩子,請把繩子剪成整數長度的 m 段 m n都是整數,n 1並且m 1 每段繩子的長度記為 k 0 k 1 k m 請問 k 0 k 1 k m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的...

剪繩子問題

給你一根長度為 n 的繩子,請把繩子剪成整數長度的 m 段 m n都是整數,n 1並且m 1 每段繩子的長度記為 k 0 k 1 k m 請問 k 0 k 1 k m 可能的最大乘積是多少?例如,當繩子的長度是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 ...