https://programmercarl.com/0343.%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.html
视频讲解:https://www.bilibili.com/video/BV1Mg411q7YJ
class Solution {
public:
int integerBreak(int n) {
vector<int> dp(n+1);
dp[2] = 1;
for(int i=3;i<=n;i++) {
for(int j=1;j<=i/2;j++) {
// dp[i] = max(dp[i],max((i-j)*j,dp[i-j]*j));
dp[i] = max((i-j)*j,dp[i-j]*j);
}
}
return dp[n];
}
};
https://programmercarl.com/0096.%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html
视频讲解:https://www.bilibili.com/video/BV1eK411o7QA
class Solution {
public:
int numTrees(int n) {
vector<int> dp(n+1);
dp[0]=1;
for(int i=1;i<=n;i++) {
for(int j=1;j<=i;j++) {
dp[i] += dp[j-1] * dp[i-j];
}
}
return dp[n];
}
};