面試題14 I 剪繩子

2021-10-23 03:08:08 字數 879 閱讀 2528

題目:

給你一根長度為 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:

輸入: 2

輸出: 1

解釋: 2 = 1 + 1, 1 × 1 = 1

示例 2:

2 <= n <= 58

解題思路:

1.當n<2時,結果為0;

2.當n==2時,只有一種剪法:1*1,所以結果為1;

3.當n==3時,有一種剪法:1*2,所以結果為2;

4.當n>3時,max=max(nums(i)*nums(n-i));以n==4為例,nums(4)=nums(2)*nums(2)=4;

nums[i]儲存的是當前這段繩子的最大值

**實現:

class solution 

else if(n==2)

else if(n==3)

int *nums=new int[n+1];

nums[0]=0;

nums[1]=1;

nums[2]=2;

nums[3]=3;

int max=0;

for(int i=4;i<=n;++i){

for(int j=1;j<=i/2;++j){

if(max耗時和記憶體使用情況:

面試題14 I 剪繩子

給你一根長度為 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 ...

面試題14 剪繩子

長度為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...

面試題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。思路 動態規劃為了...