记忆化的本质是:
先记录,后返回(记住:一定要记录,否则就是普通的递归);
如果表中有,则直接返回。

1.斐波那契写法:
1 ,1 ,2 ,3 ,5 ,8 ,13…

//结果 1134903170
#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
ll f[1001];
//原始程序:
//int fac(int n)
//{//  if(n==1) return 1;
//  else if(n==2) return 2;
//  else return fac(n-1)+fac(n-2);
//}
//记忆化:
ll fac(int n)
{ll p;if(n==1 || n==2) return 1;if(f[n]!=-1) return f[n];//查找有,直接返回 p=fac(n-1)+fac(n-2);f[n]=p;//先记录后返回 return p;
}
int main()
{   int m=45;   memset(f,-1,sizeof f);cout<<fac(m)<<endl;
}

2.NOIP2001数的计数
我们要求找出具有下列性质数的个数,先输入一个自然数n,然后对此自然数按照如下方法进行处理:
*.不做任何操作
*.在它左边加上一个自然数,但该自然数不能超过原数的一半;
*.加上数后,继续按照此规则进行处理,直到不能再次加入自然数为止。
输入:
8
输出:
10

分析:
输入为8,输入的可能性为:
8
48
38
28
18
248
148
138
128
1248

原代码:

int dfs(int t)
{int p=1;for(int i=1;i<=t/2;i++)p+=dfs(i);return p;
}

改进的代码(记忆化):

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int f[1001];
int dfs(int t)
{int p=1;if(f[t]!=-1) return f[t]; for(int i=1;i<=t/2;i++)p+=dfs(i);f[t]=p;return p;
}
int main()
{int n;cin>>n;memset(f,-1,sizeof f); cout<<dfs(n)<<endl;} 

记忆化搜索(递归)讲解相关推荐

  1. 记忆化搜索 递归缓存_需要微缓存吗? 营救记忆

    记忆化搜索 递归缓存 缓存解决了各种各样的性能问题. 有很多方法可以将缓存集成到我们的应用程序中. 例如,当我们使用Spring时,可以轻松使用@Cacheable支持. 非常简单,但我们仍然必须配置 ...

  2. 山东省第五届省赛题C Colorful Cupcakes(五维数组+记忆化搜索)

    在写题目之前先来介绍一下记忆化搜索. 算法上依然是搜索的流程,但是搜索到的一些解用动态规划那种思想和模式保存.一般来说,动态规划总要遍历所有的状态,而搜索可以排除一些无效的状态.最最最最最主要的是,搜 ...

  3. 数据结构-记忆化搜索讲解

    算法:记忆化搜索算法 一:简述 记忆化搜索实际上是递归来实现的,但是递归的过程中有许多的结果是被反复计算的,这样会大大降低算法的执行效率. 而记忆化搜索是在递归的过程中,将已经计算出来的结果保存起来, ...

  4. 2017广东工业大学程序设计竞赛决赛 题解源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)...

    心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起&qu ...

  5. P1464 Function(递归式的记忆化搜索)

    传送门 题目描述 对于一个递归函数w(a,b,c)w(a,b,c)w(a,b,c) 如果a≤0a≤0orb≤0b≤0orc≤0c≤0a \le 0a≤0 or b \le 0b≤0 or c \le ...

  6. 数字三角形——递归、递推、记忆化搜索

    数字三角形 描述:          有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数. 问题:              从第一行的数开始,每次可以往左 ...

  7. 巧用记忆化搜索代替暴力递归(洛谷P1464题题解,Java语言描述)

    题目要求 P1464题目链接 分析 如果--你信了这题干,真的写了递归--TLE警告!!! 所以,就需要优化嘛-- [−9223372036854775808,9223372036854775807] ...

  8. 递归 dfs 记忆化搜索 动态规划

    今天做洛谷P1434 [SHOI2002]滑雪 的时候仔细想了想记忆化搜索 现在总结一下 为了描述问题的某一状态,必须用到该状态的上一状态,而描述上一状态,又必须用到上一状态的上一状态--这种用自已来 ...

  9. dfs记忆化搜索(带限制的选择问题) 讲解:LeetCode打家劫舍||| / 蓝桥 地宫取宝/蓝桥 k进制数//剪格子//方格分割

    记忆化递归的必要性: 普通的递归可能会重复求解某一值,类似斐波那契数列.同样的子问题可能会被求解多次,这样就会很慢很慢很慢 解决方法:我们把历史求解(子问题)记录下来,如果下次需要求解子问题,那么直接 ...

  10. [每日一题] 128. 青蛙过河(数组、记忆化搜索、递归、剪枝)

    文章目录 1. 题目来源 2. 题目说明 3. 题目解析 方法一:哈希表.记忆化搜索.递归解法 方法二:迭代解法 方法三:回溯法+贪心策略+剪枝 1. 题目来源 链接:青蛙过河 来源:LeetCode ...

最新文章

  1. JS获取当月每天的日期,JS获取本周每天的日期
  2. 2017 Multi-University Training Contest - Team 3 Kanade's sum hd6058
  3. (转)threadPoolExecutor 中的 shutdown() 、 shutdownNow() 、 awaitTermination() 的用法和区别
  4. deepin安装java_Deepin安装Eclipse
  5. leetcodeT14-最长公共前缀(两种解法+图解)
  6. python Django之Web框架本质 (2)
  7. zookeeper的安装集群版
  8. poj1637 Sightseeing tour 混合图欧拉回路判定
  9. matlab 线性拟合相关系数,Matlab拟合非线性曲线后求相关系数(拟合的优劣)
  10. webex无法用计算机呼叫,CiscoWebExMeetingsServer疑难解答指引.PDF
  11. linux系统怎么使用r语言,linux命令行下使用R语言绘图
  12. 关于springcloud中eureka报错com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException:
  13. ubuntu中wps字体缺失的解决方法
  14. 淘宝API 优惠券查询
  15. 如何写出让同事吐血的代码?
  16. 用递归法求两个数的最大公约数
  17. 新川抖音短视频营销平台是怎么样帮助企业运营抖音蓝V号的?
  18. 2006厦门企业100强名单
  19. 动态规划-买卖股票的最佳时机 专题
  20. Springboot+MybatisPlus+layui简易账单管理项目

热门文章

  1. 计算机网络技术实训报告
  2. Android Retrofit2 Post请求添加Json类型参数笔记
  3. win7下绑定IP和MAC地址,提示ARP项添加失败,拒绝访问
  4. 老玩家的25条总结:这就是坦克世界的真理(转载) 本人觉得该看看
  5. 使用USBasp给arduino烧写bootloader
  6. 我的平面设计作品之:公司徽标类
  7. Hexo博客 Next更换修改主题样式 不生效的解决
  8. error: Store update, insert, or delete statement affected an unexpected number of rows (0). Entities
  9. Boot 参数 use_bak_rootfs
  10. RFID在钢筋仓库管理中的应用