8.7 周一
- 343. 整数拆分
- 96.不同的二叉搜索树
详细布置
343. 整数拆分
题目:将数n拆分为多个数,求其乘积最大值
题解:
1、dp[i]将i拆分后的最大乘积
2、dp[i] = Math.max(dp[i], Math.max(j*(i-j), j*dp[i-j]))
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));
}
}
96.不同的二叉搜索树
题目:节点是从1到n,问有多少种二叉搜索树
题解:
1、dp[i]表示有i个节点时二叉搜索树的数量
2、dp[i] += dp[j-1]*dp[i-j]
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
dp[i] += dp[j - 1] * dp[i - j];
}
}