Given n, how many structurally unique BST's (binary search trees) that store values 1...n?
For example,
Given n = 3, there are a total of 5 unique BST's.
1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3
代码如下:
int numTrees(int n) {
int* ways=new int[n+1];
ways[0]=1;
ways[1]=1;
for(int i=2;i<=n;i++){
ways[i]=0;
for(int left=0;left<i;left++){
int lways=ways[left];
int rways=ways[i-left-1];
ways[i]+=lways*rways;
}
}
int ret=ways[n];
delete[] ways;
return ret;
}
这是一个典型的一维动态规划问题。