leetcode之剪繩子||

給你一根長度爲 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。

簡要題解

當n大於4的時候每段繩子儘量剪成3 要是不能被3整除倒數第二段和倒數第一段的繩子結合起來 簡要代碼如下:

class Solution {
public:
    int mod=1000000007;
    int cuttingRope(int n) {
     if(n==2)return 1;
     if(n==3)return 2;
     long ans=1;
     while(n>4)
     {
         ans*=3;
         ans%=mod;
         n-=3;
     }
      ans*=n;ans%=mod;
     return ans;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章