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.動態規劃 求乙個問題的最優解 最...