ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学习日记—递推

2022-07-02 12:05:11  阅读:231  来源: 互联网

标签:ll 细胞 学习 月落乌啼 编译器 long 递推 日记


递推学习笔记:

一、什么是递推

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

二、典型例题

  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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有