長度為n的繩子,剪為m段,求最大乘積思路:
第一刀後:f(n) = f(i) * f(n-i)
從下到上計算,4可被分為兩個2段;5可分為乙個2乙個3
int maxproductaftercutting(int length)
; int max = 0;
product[1] = 1;
product[2] = 2;
product[3] = 3;
if(length < =3) return product[length-1];
for(int i=4; i<=length; i++)
product[i] = max;
} max = product[length];
delete product;
return max;
}
###貪婪
貪婪策略:n>=5,盡可能剪3
int maxproductaftercutting(int length)
int two = (length-three*3)*2;
return (int)(pow(3, three))*(int)(pow(2, two));
}
面試題14 剪繩子
面試題14 剪繩子 題目 給你一根長度為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。思路 動態規劃為了...
面試題14 剪繩子
給你一根長度為n的繩子,請把繩子剪成m段 m n都是整數,2 n 58並且m 2 每段的繩子的長度記為k 0 k 1 k m k 0 k 1 k m 可能的最大乘積是多少?例如當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到最大的乘積18。樣例 輸入 8 輸出 18定義狀態 f ...
面試題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。動態規劃 int ma...