题目描述:给定一个整数,将其做为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; } }