如图,这道题的通例解法就不用我们多说了
- class Solution {
- public:
- int dfs(int n)
- {
- if(n==1 || n == 0) return n;
- return dfs(n-1) + dfs(n-2);
- }
- int fib(int n) {
- return dfs(n);
- }
- };
复制代码 我们主要是为了引出我们的记忆化搜刮的剪枝策略,我们用一张图来分析一下
优化后的代码
- class Solution {
- public:
- int memo[35];
-
- int dfs(int n)
- {
- if(memo[n]!= -1) return memo[n];
- if(n==1 || n == 0) return n;
- memo[n] = dfs(n-1)+dfs(n-2);
- return memo[n];
- }
- int fib(int n) {
- memset(memo,-1,sizeof (memo));
- return dfs(n);
- }
- };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |