要求:剪繩子
給你一根長度為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。
測試用例:
功能測試(繩子的初始長度大於5)
邊界值測試(繩子的初始長度分別為0,1,2,3,4)
本題考點:
考查應聘者的抽象建模能力。應聘者需要把乙個具體的場景抽象成乙個能夠用動態規劃或者貪婪演算法解決的模型。
考查應聘者對動態規劃和貪婪演算法的理解。能夠靈活運用動態規劃解決問題的關鍵是具備從上到下分析問題、從下到上解決問題的能力,而靈活運用貪婪演算法則需要紮實的資料基本功。
源**:
#include //動態規劃
int maxproductaftercuttig_solution(int length)
*/
//正確的方法如下,最大值f(n) = max(f(i) *f(n-i))
int max = 0;
for (int i = 4; i <= length; i++) }
max = product[length];
deleteproduct;
return max;
}//貪婪演算法
int maxproductaftercutting_solution2(int length)
參考**:
自己**:
劍指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...
面試題14 劍指offer 剪繩子
題目 給你一根長度為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 表示...
劍指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。解題思路...