剪繩子 動態規劃法 貪心演算法

2021-10-07 06:39:00 字數 1197 閱讀 1612

1.思路:

動態規劃法:

package jianzhi_offer;

public

class

cut_shengzi

private

static

intmatproductaftercutting_1

(int length)

if(length ==2)

if(length ==3)

//將最優解儲存在陣列中

int[

] products =

newint

[length+1]

;//陣列中第i個元素表示把長度為i的繩子剪成若干段之後的乘積的最大值

products[0]

=0; products[1]

=1; products[2]

=2; products[3]

=3;int max =0;

for(

int i =

4; i <= length; i++

)

products[i]

= max;}}

max = products[length]

;return max;

}}

貪心演算法

package jianzhi_offer;

public

class

cut_shengzi_2

public

static

intcutprop

(int length)

if(length ==2)

if(length ==3)

int timeof_3 = length/3;

if(length - timeof_3*3==

1)int timeof_2 =

(length - timeof_3*3)

/2;return

(int)(

(math.

pow(

3,timeof_3))*

(math.

pow(

2,timeof_2)));}}

剪繩子(動態規劃 貪心演算法)

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

剪繩子 演算法 從剪繩子看動態規劃和貪心演算法

給你一根長度為 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。普通的動...

動態規劃與貪心演算法 剪繩子問題

問題 給你一根長度為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。求解 1.動態規劃 求乙個問題的最優解 最...