剑指Offer JZ67 剪绳子(JavaScript)

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M 热度指数:200172
本题知识点: 数学

题目描述
给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],…,k[m]。请问k[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。
输入描述:
输入一个数n,意义见题面。(2 <= n <= 60)
返回值描述:
输出答案。
示例1
输入
8
返回值
18

思路:根据规律,3越多总体越大
当可以被三整除,则全部拆成333…,如果不行,则拆为233…或者433…;总之,全部拆成3最多就可以

function cutRope(number)
{
    
    
    if(number <= 3)
        return number;
    else{
    
    
        if(number % 3 === 0){
    
    
            return Math.pow(3, number / 3);
        }
        else if(number % 3 === 1){
    
    
            return 4 * Math.pow(3, Math.floor(number / 3) - 1);
        }
        else{
    
    
            return 2 * Math.pow(3, Math.floor(number / 3));
        }
    }
}

代码参考来自:everywhereIMH

猜你喜欢

转载自blog.csdn.net/weixin_44523860/article/details/114644235