费尽心力折腾了两个小时写出来的递归方法信心满满地提交了,没想到居然超时了。。。也是,那样递归,层数一旦多了必然爆炸呀。百度了一下,看了别人的算法,叫什么一维动态规划,确实比我的厉害多了,但是自己辛苦写的倒也不能这么没了,先记录下来,将来对动态规划和递归的理解更加深入了可以回头自己分析一下。先贴我的失败例子:
class Solution {
public:
int help(int start, int end)
{
if(start >= end) return 1;
int n = 0;
for(int i = start; i <= end; i++)
{
n += help(start, i-1)*help(i+1, end);
}
return n;
}
int numTrees(int n) {
int num = 0;
return help(1, n);
}
};
然后是别人的方法: