链接: 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];
			
		}
};