首页 > 技术文章 > 剪绳子

make-big-money 2020-02-13 12:06 原文

结论:选用尽量多的3,直到剩下2或者4时,用2

/*
*
*选用尽量多的3,直到剩下2或者4时,用2
*如果有三个以上的2,那么 3×3>2×2×23×3>2×2×2,所以替换成3乘积更大;
*所以最多能拆成两个2,即4
*/
class Solution {
public:
    int maxProductAfterCutting(int n) {
        if(n<=3) return 1*(n-1);//边界情况。
        int res =1;
        if(n % 3 == 1)  //拆成两个2.即4
        {
            res = 4;
            n = n-4;
        }
        //绳子中有2
        else if(n%3 == 2)//只能拆成一个2
        {
            res =2;
            n=n-2;
        }
        //只有3
        while(n)
        {
            res=res*3;
            n-=3;
        }
        return res;
        
    }
};

推荐阅读