(這段時間寫了很多題,劍指offer快寫完了,演算法我真的…看到演算法題就不想寫,但是想了下,覺得自己不能一直這麼逃避,該學的還得學,過程總是要經歷的,就看了道關於動態規劃的題)
思路:當繩子的長度小於2的時候,就返回0;繩子長度等於2時,返回1(1x1=1);當繩子長度等於3,返回2(1x2=2);設dp[1]=1,dp[2]=2,dp[3]=3,(注意,這個陣列不包含前面幾種情況)剩下的情況就是大於等於4,小於等於n的,每次都取乙個最優解,什麼意思?假設n==4,那我們繩子長度為4,且乘積最大的,如下:
1+3=4,res=dp[1]*dp[4-1]==3;
2+2=4;res=dp[2]*dp[4-2]==4; res>3(上一次的結果),res=3
超過4的一半,就是重複的,退出迴圈,所以dp[4]=3;將最後dp[4]返回
貼個過了的**,自行體會下:
class
solution
dp[i]
=res;
}return dp[number];}
};
踏踏實實搞技術,一心一意找實 劍指Offer 剪繩子 和剪繩子
劍指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的三段,此時得到的...
劍指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。思路 動態規劃 任何動態規劃都是由遞迴演...
《劍指Offer》剪繩子
給你一根長度為n的繩子,請把繩子剪成m段 m n都是整數,n 1並且m 1 每段繩子的長度記為k 0 k 1 k m 請問k 0 xk 1 x.xk m 可能的最大乘積是多少?例如,當繩子的長度是8時,我們把它剪成長度分別為2 3 3的三段,此時得到的最大乘積是18 乘法計算,除了一以外,越多的數相...