均分绳子的长度

剪绳子

http://www.nowcoder.com/questionTerminal/57d85990ba5b440ab888fc72b0751bf8

通过分析可以知道,绳子不管被分为多少份,想要求得最大值,每份之间的差值就要最小,举个例子,数字9分为3份,可以分为(1,1,7)=7,(1,2,6)=12,(1,3,5)=15...等等,但其中最大的还是(3,3,3)=27,由此可以看出,不管绳子分多少份,都应该让每份的长度尽可能平均才能达到一个最大值。

class Solution {
public:
    int cutRope(int number) {
        int m = 2;
        int max = 0;
        for (; m <= number; m++)
        {
            int left = number % m;
            int base = number / m;
            int sum = 1;
            for (int i = 0; i < m; i++) {
                if (left-- > 0) {
                    sum *= (base + 1);
                }
                else {
                    sum *= base;
                }
            }
            if (sum > max) {
                max = sum;
            }
        }
        return max;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务