343. Integer Break

来源:互联网 发布:200元算网络诈骗吗 编辑:程序博客网 时间:2024/04/30 20:25
题目描述:给定一个整数,将其做为n个部分的和,每一部分均为大于0的整数,使得这n个整数的积最大
解题思路: 对于一个整数,如果将其分为k个部分,则当这k个部分最相近时,它们的积最大。
重点:将n%k分配给n%k个项,使每项加1,就可以使各项最接近
public class Solution {    public int IntegerBreak(int n) {            int maxProduct = 0;            int k = 2;            int product;            while (k<=n)            {                int round = n / k;                int odd = n - round * k;                if (odd == 0)                    product = (int)Math.Pow(round, k);                else                {                    product = (int)Math.Pow(round+1, odd) * (int)Math.Pow(round,k-odd);                }                                if(product>maxProduct)                    maxProduct = product;                k++;            }            return maxProduct;            }}


0 0