class Solution {
public:
int numTrees(int n) {
vector<int> v(n+1,0);
v[0] = 1;
v[1] = 1;
for (int i = 2; i <= n; ++i){
for (int k = 1; k <= i; ++k)
v[i] = v[i] + v[k - 1] * v[i - k];
}
return v[n];
}
};
- f(i)=f(0)*f(i-1)+...+f(k-1)*f(i-k)+...+f(i-1)*f(0)
- 动态规划