原題地址
題目内容
題目分析
題目的意思為,給定一個常數n,求出一個數字集合{Xi},使得X0+X1+…+Xi = n;并且使得X0*X1*….*Xi的結果最大
采用dp算法。令dp[n]為最大的product。
那麽遞推方程為:
dp[n]=max(i*dp[n-i],i*(n-i))
其中dp[1] = dp[2] = 1;
代碼實現
class Solution {
public:
int integerBreak(int n) {
int dp[100];
dp[1] = 1;
dp[2] = 1;
for(int i = 3; i <= n; i++){
dp[i] = -1;
for(int j = 1; j < i; j++){
dp[i] = max(j*dp[i-j],max(dp[i],j*(i-j)));
}
}
return dp[n];
}
};