关于m段数字最大乘积问题

给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。

根本就是函数问题,你会发现只用把绳子裁剪为3大小的乘积才会最大,在考虑到余数为1的情况把3 * 1 变为 2 * 2 =4。

public int cutRope(int target) {
        if(target == 2){
            return 2;
        }
        if(target == 3) return 3;
        int val = 3;
        int m = target / val;
        int n = target % val;
        int max = 1;
        if(n == 1){
            m = m-1;
            max *= val + n;
        }else if(n==2){
            max *= n;
        }
        for(int i =0;i<m ;i++){
            max *= val;
        }
        return max;
}