- 博客(17)
- 收藏
- 关注
原创 浅谈递归分治思想2(接上一次博客内容)
建议和上一次博客一起看,便于更好理解递归。这是我从洛谷上找的题,p1010.我们看到,第一次将一个数据拆成由2组成的序列,再把2()里面的值再次拆解直到2或者2(0)或者2+2(0)结束。很明显,括号里面做法和第一次对数据拆解用的应该是同一个方法,因此使用递归分治。做法:先上代码(能体现分治思想的片段)吧:(主要想体现分治思路)#include <iostream>#define ll long longusing namespace std;inline in
2022-02-27 23:09:15
371
原创 算法基础No.1,浅谈快速排序分治思想
一,核心思想 思想是一种分治思路,选定一个基准值,目的是将比这个值小的值排在左边,比他大的值排在右边,第一次排的时候应该不会排完,所以会用到递归,我们所说的分治思想就要体现出来,即整体,标定结束是当左指针大于右指针的时候结束递归调用。...
2022-02-27 05:11:27
156
原创 浅谈斐波那契数列,简要理解递归以及记忆化搜索
斐波那契数列当中,顺序:例如我们输入5,根据公式会递推产生f(4)和f(3),接着是f(4)优先产生分解,分解成f(3)和f(2),再接着是f(3)拆成f(2)和f(1),这是最后一级递归了,递归递归,就是要在从最小的依次开始往上返回,f(3)结果出来之后,系统紧接着计算f(2),再将f(2)和f(3)的和返回给f(4)。由于f(5)需要f(4)和f(3)的加成,系统并没有保留f(3)的值(后续记忆化搜索会给大家优化这一块,先按常规的来),因此又一次展开成f(2)和f(1)。最终
2022-02-22 12:20:01
894
原创 浅谈记忆化搜索和递归(green,有啥错的还望各位指点)
非常经典的例子就是斐波那切数列,初学递归的时候大家可能都接触过他。例如输入5,他会从从f(5)一直到f(1)或者f(2)直到遇到if,return。但是其中会有很多冗余的代码,比如经过递归已经把f(3)算出来了,但机器并没有保留下来数据,导致再遇到f(3)的时候计算机仍旧会展开成f(2)和f(1)在return回去,这样费了很多力气。而记忆化搜索百能省下很多力气,比如当你展开f(5)的时候,得出f(3)和f(4),f(3)展开成f(2)和f(1)直接return成了1,f(4)展开成f(3)和f(2
2022-02-22 00:56:51
322
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人