蓝桥杯 试题 入门训练 Fibonacci数列——9行代码AC
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯 试题 入门训练 Fibonacci数列——9行代码AC
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
難點(diǎn):
1、容易習(xí)慣性的使用遞歸解法,但遞歸的時(shí)間復(fù)雜度為O(2^n),超出時(shí)間限制。
2、加一次,就取余一次,避免溢出
3、采用非遞歸很容易想到用數(shù)組存儲(chǔ),空間復(fù)雜度為O(n)。 但更優(yōu)化的解法是:定義兩個(gè)變量交替互換,使空間復(fù)雜度也降低到O(1)
下面我給出兩種代碼,供大家參考。
欠佳的代碼 (時(shí)間:O(n),空間O(n))
#include<iostream> #define Max 1000005 using namespace std; int a[Max]; //注意要定義全局變量,因?yàn)閙ain函數(shù)中的數(shù)組最大容量為50W+ ,會(huì)溢出 int main() {int n;cin >> n;a[0] = 1; a[1] = 1;for(int i = 2; i < n; i++) {a[i] = ((a[i-1]+a[i-2])%10007);}cout << a[n-1];return 0; }最優(yōu)解(時(shí)間:O(n), 空間:O(1))
#include<iostream> using namespace std; int main() {int n; cin >> n;int n1 = 1, n2 = 1;for(int i = 2; i < n; i++) { int t = n2; n2 = ((n1+n2)%10007); n1 = t; }cout << n2;return 0; }總結(jié)
以上是生活随笔為你收集整理的蓝桥杯 试题 入门训练 Fibonacci数列——9行代码AC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法竞赛入门经典(第二版) | 例题5-
- 下一篇: 蓝桥杯 试题 入门训练 序列求和——6行