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
Summary: dynamic programming
1 int numTrees(int n) { 2 vector<int> nums; 3 nums.push_back(0); 4 for(int i = 1; i <= n; i ++) { 5 if(i == 1){ 6 nums.push_back(1); 7 }else if(i == 2){ 8 int num = i * nums[i - 1]; 9 nums.push_back(num); 10 }else if(i >= 3){ 11 int num = 0; 12 for(int j = 1; j <= i; j ++) 13 num += (nums[j - 1] == 0 ? 1 : nums[j - 1]) * (nums[i - j] == 0 ? 1 : nums[i - j]); 14 nums.push_back(num); 15 } 16 } 17 return nums[n]; 18 }