題目:
給你一根長度為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.
思路:
利用動態規劃法,f(n)表示長度為n的繩子能夠得到的最大乘積,f(n)=max(f(i)*f(n-i)),其中0**:
public
static
intcutstring
(int n)
if(n ==2)
if(n ==3)
int[
] pos =
newint
[n +1]
;int max;
pos[1]
=1; pos[2]
=2; pos[3]
=3;for
(int i =
4; i <= n; i++)}
pos[i]
= max;
} max = pos[n]
;return max;
}
劍指offer 面試題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。第一種是動態規劃 自下而上 public...
《劍指Offer》面試題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。測試用例 功能測試 ...
劍指offer面試題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。解題思路...