分析:本題可以用動態規劃,也可以用貪心法。
動態規劃:設f(n)表示當繩子長n時可以得到的最大乘積,那麼假設在i處切一刀,就會得到數學式子f(n)=max(f(i)f(n-i))(02等於4,但是當n大於等於5時,我們就要拆成盡可能多的3和剩下的2。如果要證明,我們可以證明當n大於5時,有3(n-3)>=2(n-2).
int cutrope(int number)
}
int cutrope(int number)
p[i] = max;
}return p[number];
}
從遞迴推dp,另一種方法找出最多的3和2
class solution
return ret*n;
}int cutrope2(int n)
return ret;*/
return cutropecore(n);
}int cutropecore(int n)
return ret;
}int cutrope3(int n)
}return dp[n];
}int cutrope(int n)
};
劍指offer 14 剪繩子
這種文章網上很多,沒什麼營養,我只是自己記錄一下。雖然現在不找工作了,但以後演算法能力肯定需要加強,想著能不能每天堅持一道題,其實真做起來還有點難 劍指offer以前都是邊看答案邊記下來,現在能不能靠自己寫出來呢。時間複雜度為o n2 空間複雜度為o n 有一點要注意,m不是乙個給定的引數。思路是,...
劍指Offer 14 剪繩子
nowcode 把一根繩子剪成多段,並且使得每段的長度乘積最大。n 2 return 1 2 1 1 n 10 return 36 10 3 3 4 盡可能多剪長度為 3 的繩子,並且不允許有長度為 1 的繩子出現。如果出現了,就從已經切好長度為 3 的繩子中拿出一段與長度為 1 的繩子重新組合,把...
Python 劍指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.解題思路 動態規劃 面試題14 剪...