剪绳子(1)

题目描述
给你一根长度为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)
输出描述:
返回值
示例:
输入: 8
输出:18
分析思路一:
这个思路是评论里看的比较简洁的版本,但是自己很难想到,所以后期整理的时候,十分的。。。怀疑自己。所以后面会整理个正常的动态规划版本。
1:首先是一个问题,当确定一个绳子周长的时候,怎样使得长方形的面积最大。
图片说明
通过计算,当定长时候,截得长度相等时候,乘积最大。
下面这句话不太懂:
(通用性待数学求证)
基本不等式的定理可知:算术平均数 > 几何平均数
2:回归本题得计算,题目绳子长度为n,分成m段,每段为x,则m=n/x;
图片说明
特殊值带入可以得到f3>f2;
得到每段为3时,乘积最大。

class Solution {
public:

    int cutRope(int number) {
        if(number<1) return 0;
        if(number==1||number==2) return 1;
        if(number==3) return 2;
        int w = number%3;
        switch(w){
            case 0 :
                return (int) pow(3,number/3);
            case 1:
                return (int) pow(3,number/3 -1)*4;
            case 2:
                return (int) pow(3,number/3)*2;
        }
        return 0;
    }
};
全部评论

相关推荐

07-01 23:23
郑州大学 Java
否极泰来来来来:牛客迟早有高三的
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务