class Solution {
public:
int integerBreak(int n) {
vector<int> dp(n + 1, 0);
dp[2] = 1;
for(int i = 3;i <= n;i++) {
for(int j = 1;j < i;j ++) {
// j * (i - j)相当于拆分成两个数
// j * dp[i - j]相当于拆分为两个以上
dp[i] = max(max(j * (i -j), j * dp[i - j]), dp[i]);
}
}
return dp[n];
}
};
题目2:96. 不同的二叉搜索树 - 力扣(LeetCode)
class Solution {
public:
int numTrees(int n) {
vector<int> dp(n + 1);
dp[0] = 1;
dp[1] = 1;
for(int i = 2;i <= n;i++) {
for(int j = 1;j <= i;j++) {
dp[i] += dp[j - 1] * dp[i - j];
}
}
return dp[n];
}
};
LeetCode算法题解:整数拆分与不同二叉搜索树的动态规划

310

被折叠的 条评论
为什么被折叠?



