博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Careercup - Microsoft面试题 - 5673934611546112
阅读量:5021 次
发布时间:2019-06-12

本文共 2351 字,大约阅读时间需要 7 分钟。

2014-05-10 23:26

原题:

what is the best,worst and average case complexity for fibonacci no.s ..explain?

题目:计算斐波那契数的最好、最坏、平均复杂度是多少?

解法:计算斐波那契数倒是有好多方法,不过平均复杂度是怎么个说法?我写了三种解法:1. 白痴级的二路递归,复杂度是指数级的。2. 普通的递推算法,复杂度是线性的。3. 矩阵陈法,用快速幂可以达到对数级的时间。

代码:

1 // http://www.careercup.com/question?id=5673934611546112  2 #include 
3 using namespace std; 4 5 int fib1(int n) 6 { 7 if (n < 1) { 8 return 0; 9 } 10 11 if (n == 1 || n == 2) { 12 return 1; 13 } 14 15 return fib1(n - 1) + fib1(n - 2); 16 } 17 18 int fib2(int n) 19 { 20 if (n < 1) { 21 return 0; 22 } 23 24 if (n == 1 || n == 2) { 25 return 1; 26 } 27 28 int f1, f2, f3; 29 30 f1 = f2 = 1; 31 for (int i = 3; i <= n; ++i) { 32 f3 = f1 + f2; 33 f1 = f2; 34 f2 = f3; 35 } 36 return f3; 37 } 38 39 void matrixMultiply(int a[2][2], int b[2][2], int c[2][2]) 40 { 41 int i, j, k; 42 43 for (i = 0; i < 2; ++i) { 44 for (j = 0; j < 2; ++j) { 45 c[i][j] = 0; 46 for (k = 0; k < 2; ++k) { 47 c[i][j] += a[i][k] * b[k][j]; 48 } 49 } 50 } 51 } 52 53 void matrixPower(int a[2][2], int b[2][2], int n) 54 { 55 if (n < 1) { 56 b[0][0] = b[1][1] = 1; 57 b[0][1] = b[1][0] = 0; 58 return; 59 } 60 61 if (n == 1) { 62 b[0][0] = a[0][0]; 63 b[0][1] = a[0][1]; 64 b[1][0] = a[1][0]; 65 b[1][1] = a[1][1]; 66 return; 67 } 68 69 int p[2][2]; 70 matrixPower(a, p, n / 2); 71 if (n % 2) { 72 int c[2][2]; 73 matrixMultiply(p, p, c); 74 matrixMultiply(a, c, b); 75 } else { 76 matrixMultiply(p, p, b); 77 } 78 } 79 80 int fib3(int n) 81 { 82 if (n < 1) { 83 return 0; 84 } 85 86 if (n == 1 || n == 2) { 87 return 1; 88 } 89 90 int a[2][2] = { 91 {
1, 1}, 92 {
1, 0} 93 }; 94 int b[2][2]; 95 matrixPower(a, b, n - 2); 96 97 return b[0][0] + b[0][1]; 98 } 99 100 int main()101 {102 int n;103 104 while (cin >> n) {105 cout << fib3(n) << endl;106 }107 108 return 0;109 }

 

转载于:https://www.cnblogs.com/zhuli19901106/p/3721208.html

你可能感兴趣的文章
js-权威指南学习笔记19.2
查看>>
hexo 搭建博客
查看>>
关于 UIWebView 几个高级用法
查看>>
maven创建的项目中无法创建src/main/java 解决方案
查看>>
华为软件开发云测评报告二:代码检查
查看>>
集合1
查看>>
js 原生 ajax
查看>>
关键词 virtual
查看>>
建造者模式(屌丝专用)
查看>>
UVALive 4730 Kingdom +段树和支票托收
查看>>
[APIO2010]特别行动队
查看>>
[SCOI2016]幸运数字
查看>>
SpringBoot 集成ehcache
查看>>
初步swift语言学习笔记2(可选类型?和隐式可选类型!)
查看>>
Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
查看>>
在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
查看>>
在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法
查看>>
【转】 Newtonsoft.Json高级用法
查看>>
CodeBlocks X64 SVN 编译版
查看>>
Excel催化剂开源第42波-与金融大数据TuShare对接实现零门槛零代码获取数据
查看>>