1.题目解析
题目来源
|-------------------------------------------------------------------------------------------------------------------|
| 96.不同的二叉搜索树------力扣 |

测试用例

2.算法原理
1.状态表示

2.状态转移方程

3.初始化
需要用到前面位置的值,则需要初始化dp[0]为1,方便后续的填表
4.填表顺序
从前向后
5.返回值
根据状态表示返回dp[n]
3.实战代码
cpp
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];
}
};
代码解析
