剑指 Offer 14- I. 剪绳子

题目

剑指 Offer 14- I. 剪绳子

分析

绳子切分方案 乘积 结论
2=1+1 1×1=1
3=1+2 1×2=2
4=2+2=1+3 2×2=4>1×3=3 4 和 2 等价,且 2+2 比 1+3 更优
5=2+3=1+4 2×3=6>1×4=4
6=3+3=2+2+2 3×3=9>2×2×2=8 6 应切分为 3+3,进而推出 3 比 2 更优

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

代码

class Solution {
public:
    int cuttingRope(int n) {
        if(n <= 3)
            return 1 * (n - 1);
        int res = 1;
        if(n % 3 == 1)
            res = 4, n -= 4;
        else if(n % 3 == 2)
            res = 2, n -= 2;
        while(n) 
            res *= 3, n -= 3;
        return res;
    }
};
posted @ 2022-04-20 15:14  当惜  阅读(26)  评论(0)    收藏  举报