刷题:递归问题与动态规划
#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;
}
刷题:递归问题与动态规划相关推荐
- C#LeetCode刷题-递归
递归篇 # 题名 刷题 通过率 难度 687 最长同值路径 30.8% 简单 698 划分为k个相等的子集 30.7% 中等 726 原子的数量 37.2% 困难 761 特殊的二进制序列 50.5% ...
- 每日刷题计划Day3笔记-动态规划
题源:LeetCode 动态规划框架 # 初始化 base case dp[0][0][...] = base # 进行状态转移 for 阶段1 in 阶段1的所有取值:for 阶段2 in 阶段2的 ...
- LeetCode刷题---递归回溯分治【2020第一版】
# 诗经·秦风·无衣 岂曰无衣,与子同袍.王于兴师,修我戈矛.与子同仇. 岂曰无衣,与子同泽.王于兴师,修我矛戟.与子谐作. 岂曰无衣,与子同裳.王于兴师,修我甲兵.与子谐行. #把正确的时间拿来看看 ...
- 贤鱼的刷题日常【c++动态规划】4978:宠物小精灵之收服
描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物小精灵.小智也想收服其中的一些小精灵.然而,野生的小精灵并不那么容易被收服 ...
- GitHub疯传,这个Leetcode刷题手册到底有多流弊?
写在前面 最近一个读者和我反馈,他坚持刷题2个月,终于去了他梦寐以求的大厂,薪资涨幅非常可观,期间面字节跳动还遇到了原题...并表示目前国内的大厂和一些独角兽,已经越来越效仿硅谷公司的做法,通过面试给 ...
- GitHub标星90K,这份持续霸榜的Leetcode刷题手册到底有多强?
写在前面 最近一个读者和我反馈,他坚持刷题2个月,终于去了他梦寐以求的大厂,薪资涨幅非常可观,期间面字节跳动还遇到了原题...并表示目前国内的大厂和一些独角兽,已经越来越效仿硅谷公司的做法,通过面试给 ...
- 找到所有数组中消失的数字_【一点资讯】千万程序员的呼声:面试如何拿到大厂Offer?这份阅读量超过11W+的算法刷题宝典请你原地查收 www.yidianzixun.com...
如何才能通过面试拿到大厂Offer? "刷leetcode!" 这是我听到最多的回答! 现在越来越多的人应聘工作时都得先刷个几十百来道题,不刷题感觉都过不了面试. 无论是面测试.算 ...
- DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台、刷题集合、问题为导向的十大类刷题算法(数组和字符串、栈和队列、二叉树、堆实现、图、哈希表、排序和搜索、动态规划/回溯法/递归/贪心/分治)总
DSt:数据结构的最强学习路线之数据结构知识讲解与刷题平台.刷题集合.问题为导向的十大类刷题算法(数组和字符串.栈和队列.二叉树.堆实现.图.哈希表.排序和搜索.动态规划/回溯法/递归/贪心/分治)总 ...
- 力扣动态规划入门21天刷题计划(共计46题)
刷题地址:https://leetcode-cn.com/study-plan/dynamic-programming/?progress=8e97f6 动态规划常常适用于有重叠子问题和最优子结构性质 ...
- C#LeetCode刷题-动态规划
动态规划篇 # 题名 刷题 通过率 难度 5 最长回文子串 22.4% 中等 10 正则表达式匹配 18.8% 困难 32 最长有效括号 23.3% 困难 44 通配符匹配 17.7% 困难 53 最 ...
最新文章
- MySQL工具1:mysqladmin
- Linux下命令行安装weblogic10.3.6
- redis文档翻译_key设置过期时间
- 模拟模型学习 几何布朗运动_Java的几何布朗运动
- tensorflow越跑越慢_tensorflow sess.run()越来越慢的原因分析及其解决方法
- MacOS~jenkins里解决docker执行权限问题
- vb6实现union数据结构_Redis数据结构与对象编码解析
- django xadmin ForeignKey display
- org.apache.commons.lang.text.StrLookup缺失
- easy2game使用教程_Easy2d教程——Game类的使用
- python蓝牙模块_Python蓝牙模块lightblue在mac osx 10.8上不起作用
- 信号完整性分析学习--15--传输线
- 天然气阶梯是按年还是按月_燃气阶梯是一年一清吗 燃气阶梯的定义
- 微服务架构开发实战:什么是微服务的熔断机制和熔断的意义
- 为什么有人会说「感谢拼多多」,让一贫如洗的我还能活下去?
- css 平移到某个位置_平移:translate() - CSS3 | 绿叶学习网
- 【线代】特征值、惯性指数、标准型、规范型的关系?等价、相似与合同?
- ROS下安装vscode并配置ROS编译环境
- 《跨语言文本相似性检测》第一周—前期调研
- 下载 Internet Explorer 11(脱机安装程序)