Unique Binary Search Tree

这道题花了些时间,首先提交时runtim  error,然后发现时申请数组没有释放。

最后整理下题目的思路,这道题是动态规划,不过比较麻烦。想了好久才推出来,递推公式为  Cn = 2*Cn-1 + C0*Cn-2 + C1*Cn-3  ...... + Cn-2*C0。

得到递推公式代码就很快了,一遍过。

ps:申请动态数组   new int(5)是指申请int型空间,在将其赋值为5,new int[5]是申请5个int型空间。

 1 class Solution {
 2 public:
 3     int numTrees(int n) {
 4         if(n==0)
 5         return 0;
 6         int* array = new int[n];
 7         array[0] = 1;
 8         //array[1] = 2;
 9         //array[2] = 5;
10         for(int i=1;i<n;i++)
11             array[i] = 0;
12 
13         for(int i=1;i<n;i++)
14         {
15             array[i] += 2*array[i-1];
16             for(int j=0;j<i-1;j++)
17                 array[i] += array[j]*array[i-2-j];
18         }
19 
20         int val = array[n-1];
21         delete array;
22         return val;
23     }
24 };

 

posted @ 2015-02-05 21:35  醉剑客  阅读(202)  评论(0编辑  收藏  举报