链接: https://oj.leetcode.com/problems/unique-binary-search-trees/
dp[i]表示当n为i时的BST数量..递推关系如下图
这样,就把n=4分割为n=3,n=1,n=2.用dp数组记录结果
代码:
class Solution
{
public:
int numTrees(int n)
{
int dp[n+1];
memset(dp,0,sizeof(dp));
dp[0]=1;
for(int i=1;i<=n;i++)
{
for(int j=0;j<i;j++)
{
dp[i]+=dp[j]*dp[i-j-1];
}
}
return dp[n];
}
};