剑指offer—剪绳子 解答

剑指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。

思路

这题我们需要先进行分析,每一段的大小范围在多少?

代码

public class Solution {
    public int cutRope(int n) {
        if(n<=1) return 0;
        if(n==2) return 1;
        if(n==3) return 2;
        int re = 1;
        int num = n;
        while(num>4){
            re *= 3;
            num -= 3;
        }
        if(num==3) return re*3;
        if(num==4) return re*2*2;
        if(num==2) return re*2;
        return re;
    }
}
  • 本文作者: dzou | 微信:17856530567
  • 本文链接: http://www.dzou.top/post/cut-string-rope.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!