演算法學習 1

2021-10-16 18:33:51 字數 760 閱讀 6137

劍指offer演算法題

題目描述

給你一根長度為n的繩子,請把繩子剪成整數長的m段(m、n都是整數,n>1並且m>1,m<=n),每段繩子的長度記為k[1],…,k[m]。請問k[1]x…xk[m]可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2、3、3的三段,此時得到的最大乘積是18。

題目分析

1.首先判斷k[0]到k[m]可能有哪些數字,實際上只可能是2或者3。

2 .當然也可能有4,但是4=2*2,我們就簡單些不考慮了。

5 < 2 * 3, 6 < 3 * 3,比6更大的數字我們就更不用考慮了,肯定要繼續分。

3.其次看2和3的數量,2的數量肯定小於3個,為什麼呢?因為2 * 2 * 2 < 3 * 3,那麼題目就簡單了。

4.直接用n除以3,根據得到的餘數判斷是乙個2還是兩個2還是沒有2就行了。

5.由於題目規定m>1,所以2只能是1 * 1,3只能是2 * 1,這兩個特殊情況直接返回就行了。

6.乘方運算的複雜度為:o(log n),用動態規劃來做會耗時比較多。

public

class

solution

if(target ==3)

long x = target %3;

long y = target /3;

if(x ==0)

else

if(x ==1)

else

}}

演算法學習 1

插入排序是學習演算法時最先學到的乙個演算法,很簡單,也許看一遍就會理解,從而覺得自己掌握這個基本的演算法。但是很多人可能會像我一樣,過了一段時間,提筆來寫一下插入排序的偽 就很難寫出書本上如此優雅的偽 insertion sort a for j 2 to a.length key a j inse...

演算法學習1

求最大子列和問題 給定n個整數的序列,求最大連續子列和,演算法 求出每乙個子列的和 然後得到最大的和返回 static intmaxsum1 int arr if maxsumreturn maxsum 時間複雜度 t n 3 空間複雜度 o 1 優化1 已經計算過的子列和不需要重複計算,再已經計算...

演算法學習1

因為報名參加了藍橋杯軟體技術大賽,所以,我這段時間也在練習寫演算法方面的題,但這不是主要的,更多的是為自己打下乙個好的基礎,為以後自己找工作做儲備。題目 定義乙個circle類,包含乙個double型的radius屬性代表圓的半徑,乙個findarea 返回圓的面積。定義乙個passobject,在...