第11题:343. Integer Break
怎么说呢,水题一时爽,一直水题一直爽。
题目大意:给定一个正整数,使他等于至少两个数之和,并求这些加数的最大积。
题目分析:题目意思很清楚,就是求给定和的加数的最大积。动态转移方程: ,其中。直接上代码:
class Solution {
public:
int integerBreak(int n) {
if(n==2) return 1;
else if(n==3) return 2;
int dp[n+1];
memset(dp, 0, sizeof(int)*(n+1));
dp[1] = 1;
dp[2] = 2;
dp[3] = 3;
int tem;
for(int i=4;i<=n;i++){
for(int j=1;j<=i/2;j++){
tem = dp[j]*dp[i-j];
dp[i] = (dp[i]>tem?dp[i]:tem);
}
}
return dp[n];
}
};
其实中间一个式子就可以了:,但是不想用这个函数,就自己写了。