标签:
这道题花了些时间,首先提交时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 };
标签:
原文地址:http://www.cnblogs.com/ZhangYushuang/p/4275992.html