其他分享
首页 > 其他分享> > 学习日记—递推

学习日记—递推

作者:互联网

递推学习笔记:

一、什么是递推

  递推算法是一种较为简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。递推算法分为顺推逆推两种。

二、典型例题

  1.(正推)P1720 月落乌啼算钱(斐波那契数列)洛谷传送门

    题目背景

       (本道题目木有隐藏歌曲……不用猜了……)

    《爱与愁的故事第一弹·heartache》最终章。

     吃完 pizza,月落乌啼知道超出自己的预算了。为了不在爱与愁大神面前献丑,只好还是硬着头皮去算钱……

  题目描述

    算完钱后,月落乌啼想着:“你 TMD 坑我,(以下用闽南语读)归粒靠杯靠亩诶,(以下用英读)是伊特游!”于是当爱与愁大神问多少钱时,月落乌啼说了一堆乱码。爱与愁大神说:“算了算了,我只问第n样菜价格多少?”月落乌啼写出了:

    由于爱与愁大神学过编程,于是就用 1 分钟的时间求出了Fn​ 的结果。月落乌啼为此大吃一惊。你能学学爱与愁大神求出 Fn​ 的值吗?

  输入格式

    一行一个自然数n。

  输出格式

    只有1行一个实数Fn​,保留两位小数。

  理性分析一下

    答:不能

    这题看起来花里胡哨,但一看题目“斐波那契数列”,思路一下就清晰了,这个证明过程网上一搜一大堆我就不一一叙述了(主要是作者不会),言归正传,既然是一道递推题,那肯定要找递推式,很幸运斐波那契数列的特点便是递推公式,即:

    f[i]=f[i-1]+f[i-2](i>2),f[i]=1(i<=2)

    废话不多数上代码  

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 ll n,a=1,b=1,c=1; 
 5 int main() {
 6     cin>>n;
 7     if(!n){//特判一下0 
 8         cout<<"0.00";
 9         return 0;
10     }
11     for(int i=3;i<=n;i++){
12         //一个优化,其实用数组也行 
13         c=a+b;
14         a=b;
15         b=c; 
16     }
17     cout<<c<<".00";
18     return 0;
19 }

 

    其实还可以打表,但比赛中不是什么好方法,所以不赘述了

 

  2.(逆推)忘了叫什么名了

  题目描述

    有一种细胞叫做A(忘名了),所有这种细胞每1分钟繁殖一个和自己一摸一样的细胞,有一个培养皿,可以容纳2^20个这种细胞,现在19分钟后培养皿满了,最开始培养皿里有多少个细胞?

  分析

    “所有这种细胞每1分钟繁殖一个和自己一摸一样的细胞”这句话一看好像不太明白什么意思,其实这句话就等于细胞数每分钟翻1倍,也就是乘以2,这样这个问题就简单多了,就是一个小学奥数题,不废话,上代码

    

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a=1; 
int main() {
    for(int i=1;i<=20;i++)a=a*2;//容器最多能装多少 
    for(int i=1;i<=19/1;i++)a=a/2;//一点一点往后推
    cout<<a;
    //虽然这个程序十分无用,但是一个典型易懂的倒推 
    return 0;
}

 

三、DEV-C++开栈

  大家再做一些DFS的题时可能有遇到过这样的情况:在自己的编译器上跑一些样例,编译器跑一会就停了下来,下面还有一堆返回值,BUG找了半天没找到,但抱着生无可恋的心理一交,结果AC了,此时内心的激动想必大家都理解。但为什么编译器上跑不行交答案就对了呢?难道是因为数据太水?显然不是。这是因为你的DFS递归太多,爆系统栈编译器强制给你停了,那解决方法也很简单,那就是开栈,具体步骤如下:

    在(工具->编译选项->编译器(勾选“编译时加入以下命令”))中加入:-Wl,--stack=512000000 并勾选“确定”即可,就像下图一样便可以了

         

     注意:开栈时别开太大我这个就已经接近512MB了,开太大如过写递归时没返回值,电脑会卡到连声音和图像加载模块都卸载掉,甚至会死机,这样你只能强制关机,而你的代码是否还留的住就随缘了,本人之前就开过10G的栈,结果DFS没return直接死机。

    最后本人如果博客写的有误或你觉得还不够好欢迎批评指出,还有都看到这里还不点个赞吗?

 

 

标签:ll,细胞,学习,月落乌啼,编译器,long,递推,日记
来源: https://www.cnblogs.com/2009cqr/p/16436971.html