关闭

以斐波那契数列为例——浅尝记忆化搜索

标签: 算法
115人阅读 评论(0) 收藏 举报
分类:

记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用动态规划的那种思想和模式作一些保存。
一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态。
更重要的是搜索还可以剪枝,可能剪去大量不必要的状态,因此在空间开销上往往比动态规划要低很多。
记忆化算法在求解的时候还是按着自顶向下的顺序,但是每求解一个状态,就将它的解保存下来,
以后再次遇到这个状态的时候,就不必重新求解了。
这种方法综合了搜索和动态规划两方面的优点,因而还是很有实用价值的。

下面是例子

#include<stdio.h>

int fi[700];
int fib(int n)
{
    if(n==1||n==2)
        return 1;
    if(fi[n]!=0)
        return fi[n];
    return fi[n]=fib(n-1)+fib(n-2);
}

int main()
{
    int n;
    while(scanf("%d",&n)&&n)
    {
        printf("%d\n",fib(n));
    }
    return 0;
}
0
0
查看评论

带记忆化搜索的斐波那契数列

带记忆化搜索的斐波那契数列//通过dp数组保留部分结果,动态规划避免大量重复性操作#include <cstdio> #include <iostream> #include <algorithm> using namespace std; const int M...
  • yinghuoai
  • yinghuoai
  • 2017-11-20 08:46
  • 163

矩阵快速幂(以斐波那契数列为例)

小 M 玩数列【问题描述】 小 W 发现了一个神奇的数列: () = ( − 1) + ( − 2) { ≥ 3, (1) = 1, (2) = 1} ,这就是著名的 Fibonacci Sequence = =!。 众所周知,小 M 的数学超级超级好,于是给小 W 出了一...
  • pcccccccccc
  • pcccccccccc
  • 2017-06-28 18:28
  • 51

递归+记忆化搜索

边界条件与递归方程是递归函数的两个要素。 1)阶乘函数 直接打板子: Int fac(int n) { If (n==0) return 1; Else return n*fac(n-1); } 这里,第一句的if是边界条件,第二句是递归方程。0的阶乘为1,n的阶乘为(n-1)的阶乘再乘n。 2)汉...
  • zjh_2017
  • zjh_2017
  • 2017-10-29 07:22
  • 114

以圆桌骑士为例浅尝HTML5游戏开发

随着XHTML的逐渐式微,Chrome,Safari,FireFox,Opera等现代浏览器正在积极完善HTML5实现,IE9也加入到标准的行列并将在今年上半年发布正式版,HTML5时代来临了。 在各种HTML5特性中,最吸引人的莫过于canvas标签,其提供的绘图API将颠覆以往web表现力...
  • sinat_30966441
  • sinat_30966441
  • 2015-09-20 18:54
  • 253

搜索引擎设计实用教程(2)-以百度为例

/*版权声明:可以任意转载,转载时请务必标明文章原始出处和作者信息 .*/搜索引擎设计实用教程(2)-以百度为例   之二:Spelling Checker拼写检查错误提示(以及拼音提示功能)     中科院软件所 张俊林  2005年11月   拼写检查错误提示是搜索引擎都具备的一个功能,也就是说...
  • malefactor
  • malefactor
  • 2005-11-26 15:33
  • 7237

CK2255-以慕课网日志分析为例 进入大数据 Spark SQL 的世界

CK2255-以慕课网日志分析为例 进入大数据 Spark SQL 的世界 新年伊始,学习要趁早,点滴记录,学习就是进步! 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视...
  • cadn_jueying
  • cadn_jueying
  • 2018-01-23 22:29
  • 93

数据库中视图相关(以mysql为例)

一. 概述 视图是从一个或多个表或视图中导出的表, 他也包含一系列带有名称的数据列和若干数据行。 然而视图并不同于数据库中真实存在的表。 视图为虚拟表, 其结构和数据建立在对数据库真实表的查询基础上。 视图的内容基于查询操作的sql语句, 它的数据是在引用真实表时动态所生成的 视图并不是以数据集的方...
  • AcSuccess
  • AcSuccess
  • 2017-02-23 15:44
  • 212

以慕课网日志分析为例 进入大数据 Spark SQL 的世界

每天都会分享各大视频资源站资源,大家一起学习 qq群:377215114
  • jianyue178826
  • jianyue178826
  • 2018-02-06 08:51
  • 64

webpack多页应用架构 - 实战webpack

怎么打包公共代码才能避免重复? 前言 与单页应用相比,多页应用存在多个入口(每个页面即一个入口),每一个入口(页面)都意味着一套完整的js代码(包括业务逻辑和加载的第三方库/框架等)。在文章《webpack配置常用部分有哪些?》中,我介绍了如何配置多页应用的入口(entry),然而,如果仅仅如此操作...
  • dan978146850
  • dan978146850
  • 2017-04-07 15:11
  • 262

搜索引擎设计实用教程(1)-以百度为例

搜索引擎设计实用教程-以百度为例                      &#...
  • malefactor
  • malefactor
  • 2005-11-22 16:26
  • 16729
    个人资料
    • 访问:1250次
    • 积分:222
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类