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)
- 动态规划