LeetCode

来源:互联网 发布:淘宝a店是什么店 编辑:程序博客网 时间:2024/05/26 09:57

解题代码:

classSolution {

public:

    int integerBreak(int n) {

        if(n==2)

            return 1;

        if(n==3)

            return 2;

        if(n==4)

            return 4;

        int res=0;

        int i=n/3,j=n%3;

        if(j==0)

            return pow(3,i);

        if(j==1)

            return pow(3,i-1)*4;

        if(j==2)

            return pow(3,i)*2;

    }

};

解题思路:

题目要求把n分解成至少两个正整数,使得这些正整数之积最大。一开始并没有太多的思路,后来经过尝试后发现了一个规律,将一个数分解成尽可能多的3,它们的积最大。对于不能被3整除的数,假设功能分解成i个3,若余数为2,,2*3^i最大,若余数为1,则4*3^(i-1)最大。而对于4,此规律不适用,但明显可知结果为4,而2与3,因为必须分解成至少两个数,所以也无法利用此规律,而结果分别为1与2。

0 0
原创粉丝点击