蓝桥杯备考:DFS之记忆化搜刮

打印 上一主题 下一主题

主题 885|帖子 885|积分 2655


如图,这道题的通例解法就不用我们多说了
  1. class Solution {
  2. public:
  3.     int dfs(int n)
  4.     {
  5.         if(n==1 || n == 0) return n;
  6.         return dfs(n-1) + dfs(n-2);
  7.     }
  8.     int fib(int n) {
  9.         return dfs(n);
  10.     }
  11. };
复制代码
我们主要是为了引出我们的记忆化搜刮的剪枝策略,我们用一张图来分析一下

优化后的代码
  1. class Solution {
  2. public:
  3.     int memo[35];
  4.    
  5.     int dfs(int n)
  6.     {
  7.         if(memo[n]!= -1) return memo[n];
  8.         if(n==1 || n == 0) return n;
  9.         memo[n] = dfs(n-1)+dfs(n-2);
  10.         return memo[n];
  11.     }
  12.     int fib(int n) {
  13.         memset(memo,-1,sizeof (memo));
  14.         return dfs(n);
  15.     }
  16. };
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表