題目描述:
給定乙個正整數 n,將其拆分為至少兩個正整數的和,並使這些整數的乘積最大化。 返回你可以獲得的最大乘積。
例子:輸入: 2
輸出: 1
解釋: 2 = 1 + 1, 1 × 1 = 1。
思路1:暴力遞迴
class solution
int process(int n)
int max = 0;
for(int i = 2 ; i <= n-1 ; i++)
return max;
}}
思路二:優化記憶化搜尋
class solution
int process(int n)
if(memery[n] != 0)
int max = 0;
for(int i = 2 ; i <= n-1 ; i++)
memery[n] = max;
return max;
}}
思路三:動態規劃
class solution
} return dp[n];
}}
劍指offer 14 數值的整數次方
給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。解法 首先明確下圖的公式 所以我們可以使用遞迴去求解這個問題,同時要注意當指數為負數時候對結果的影響 class solution unsigned int new exponent uns...
劍指offer 14 剪繩子
分析 本題可以用動態規劃,也可以用貪心法。動態規劃 設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...
劍指offer 14 剪繩子
這種文章網上很多,沒什麼營養,我只是自己記錄一下。雖然現在不找工作了,但以後演算法能力肯定需要加強,想著能不能每天堅持一道題,其實真做起來還有點難 劍指offer以前都是邊看答案邊記下來,現在能不能靠自己寫出來呢。時間複雜度為o n2 空間複雜度為o n 有一點要注意,m不是乙個給定的引數。思路是,...