整数拆分
用DP来解决非常明显的,主要就是虽然说是必须拆分成两个数字,但是在DP的过程中,可以不选择拆分。
class Solution {
public:
int integerBreak(int n) {
vector<int> dp(n+1);
dp[1] = 1;
for(int i=2;i<=n;i++){
for(int j=1;j<i;j++){
dp[i] = max(dp[i],max(dp[j],j)*max(dp[i-j],i-j));
}
}
return dp[n];
}
};