#include<iostream>
#include<vector>
using namespace std;/**************************************
*
*        斐波那契问题的三种解法
*
***************************************/
//方法1:递归调用函数,时间复杂度 = 2^N
int Fibonacci_fun1(int n)
{if (n < 1)return 0;else if (n == 1 || n == 2)return 1;elsereturn Fibonacci_fun1(n - 1) + Fibonacci_fun1(n - 2);
}
//方法2:非递归方法,时间复杂度 = N
int Fibonacci_fun2(int n)
{if (n < 1)return 0;else if (n == 1 || n == 2)return 1;else{int res = 1;int pre = 1;int temp = 0;for (int i = 3; i <= n; ++i){temp = res;res = pre;pre = pre + temp;}return pre;}
}
//方法3:矩阵乘法,时间复杂度 = logN
vector<vector<int>> Mat_multip(vector<vector<int>> m, vector<vector<int>> n)
{vector<vector<int>> res(m.size());for (int i = 0; i < m.size(); ++i)res[i].reserve(2);int temp = 0;for (int i = 0; i < m.size(); ++i){for (int j = 0; j < n.at(0).size(); ++j){temp = 0;for (int k = 0; k < m.at(0).size(); ++k){temp += m.at(i).at(k)*n.at(k).at(j);}res.at(i).push_back(temp);}}return res;
}vector<vector<int>> MatPower( vector<vector<int>> m, int n)
{vector<vector<int>> res = { {1,0},{0,1} };vector<vector<int>> temp = m;for (; n != 0; n >>= 1){if ((n & 0x1) == 1)res = Mat_multip(res, temp);temp = Mat_multip(temp, temp);}return res;
}int Fibonacci_fun3(int n)
{if (n < 1)return 0;else if (n == 1 || n == 2)return 1;else{vector<vector<int>> base = { { 1,1 },{ 1,0 } };vector<vector<int>> res;res = MatPower(base, n - 2);return res[0][0] + res[1][0];}
}int main()
{cout << "Fibonacci_fun2: " << Fibonacci_fun3(40) << endl;cout << "Fibonacci_fun2: " << Fibonacci_fun2(40) << endl;cout << "Fibonacci_fun1: " << Fibonacci_fun1(40) << endl;return 0;
}

刷题:递归问题与动态规划相关推荐

  1. C#LeetCode刷题-递归

    递归篇 # 题名 刷题 通过率 难度 687 最长同值路径 30.8% 简单 698 划分为k个相等的子集 30.7% 中等 726 原子的数量 37.2% 困难 761 特殊的二进制序列 50.5% ...

  2. 每日刷题计划Day3笔记-动态规划

    题源:LeetCode 动态规划框架 # 初始化 base case dp[0][0][...] = base # 进行状态转移 for 阶段1 in 阶段1的所有取值:for 阶段2 in 阶段2的 ...

  3. LeetCode刷题---递归回溯分治【2020第一版】

    # 诗经·秦风·无衣 岂曰无衣,与子同袍.王于兴师,修我戈矛.与子同仇. 岂曰无衣,与子同泽.王于兴师,修我矛戟.与子谐作. 岂曰无衣,与子同裳.王于兴师,修我甲兵.与子谐行. #把正确的时间拿来看看 ...

  4. 贤鱼的刷题日常【c++动态规划】4978:宠物小精灵之收服

    描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物小精灵.小智也想收服其中的一些小精灵.然而,野生的小精灵并不那么容易被收服 ...

  5. GitHub疯传,这个Leetcode刷题手册到底有多流弊?

    写在前面 最近一个读者和我反馈,他坚持刷题2个月,终于去了他梦寐以求的大厂,薪资涨幅非常可观,期间面字节跳动还遇到了原题...并表示目前国内的大厂和一些独角兽,已经越来越效仿硅谷公司的做法,通过面试给 ...

  6. GitHub标星90K,这份持续霸榜的Leetcode刷题手册到底有多强?

    写在前面 最近一个读者和我反馈,他坚持刷题2个月,终于去了他梦寐以求的大厂,薪资涨幅非常可观,期间面字节跳动还遇到了原题...并表示目前国内的大厂和一些独角兽,已经越来越效仿硅谷公司的做法,通过面试给 ...

  7. 找到所有数组中消失的数字_【一点资讯】千万程序员的呼声:面试如何拿到大厂Offer?这份阅读量超过11W+的算法刷题宝典请你原地查收 www.yidianzixun.com...

    如何才能通过面试拿到大厂Offer? "刷leetcode!" 这是我听到最多的回答! 现在越来越多的人应聘工作时都得先刷个几十百来道题,不刷题感觉都过不了面试. 无论是面测试.算 ...

  8. DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总

    DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台.刷题集合.问题为导向的十大类刷题算法(数组和字符串.栈和队列.二叉树.堆实现.图.哈希表.排序和搜索.动态规划/回溯法/递归/贪心/分治)总 ...

  9. 力扣动态规划入门21天刷题计划(共计46题)

    刷题地址:https://leetcode-cn.com/study-plan/dynamic-programming/?progress=8e97f6 动态规划常常适用于有重叠子问题和最优子结构性质 ...

  10. C#LeetCode刷题-动态规划

    动态规划篇 # 题名 刷题 通过率 难度 5 最长回文子串 22.4% 中等 10 正则表达式匹配 18.8% 困难 32 最长有效括号 23.3% 困难 44 通配符匹配 17.7% 困难 53 最 ...

最新文章

  1. MySQL工具1:mysqladmin
  2. Linux下命令行安装weblogic10.3.6
  3. redis文档翻译_key设置过期时间
  4. 模拟模型学习 几何布朗运动_Java的几何布朗运动
  5. tensorflow越跑越慢_tensorflow sess.run()越来越慢的原因分析及其解决方法
  6. MacOS~jenkins里解决docker执行权限问题
  7. vb6实现union数据结构_Redis数据结构与对象编码解析
  8. django xadmin ForeignKey display
  9. org.apache.commons.lang.text.StrLookup缺失
  10. easy2game使用教程_Easy2d教程——Game类的使用
  11. python蓝牙模块_Python蓝牙模块lightblue在mac osx 10.8上不起作用
  12. 信号完整性分析学习--15--传输线
  13. 天然气阶梯是按年还是按月_燃气阶梯是一年一清吗 燃气阶梯的定义
  14. 微服务架构开发实战:什么是微服务的熔断机制和熔断的意义
  15. 为什么有人会说「感谢拼多多」,让一贫如洗的我还能活下去?
  16. css 平移到某个位置_平移:translate() - CSS3 | 绿叶学习网
  17. 【线代】特征值、惯性指数、标准型、规范型的关系?等价、相似与合同?
  18. ROS下安装vscode并配置ROS编译环境
  19. 《跨语言文本相似性检测》第一周—前期调研
  20. 下载 Internet Explorer 11(脱机安装程序)

热门文章

  1. 数据结构(06)— 线性循环链表实战
  2. python 实现桶排序
  3. 有存款,才能过得更踏实
  4. LeetCode简单题之检查某单词是否等于两单词之和
  5. TVM示例展示 README.md,Makefile,CMakeLists.txt
  6. ResNet50结构
  7. AIoT开放平台及应用
  8. C ++变量,文字和常量
  9. CodeGen融合核心关系循环扩展
  10. 每秒能捕捉万亿帧的相机