c_cpp 斐波那契

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 斐波那契相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>
using namespace std;

int fibBU(int n);
int fib(int n);
int fib(int n, map<int,int> &memo);

int main(){
    //freopen("ip.txt","r",stdin);
    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        cout<<"Memoization: "<<fib(n)<<endl;
        cout<<"BottomUp: "<<fibBU(n)<<endl;
    }
    return 0;
}

// Memoization
int fib(int n){
    map<int,int> memo;
    return fib(n,memo);
}
int fib(int n, map<int,int> &memo){
    if(n==1 || n==2){
        return 1;
    }
    if(memo.find(n)!=memo.end()){
        return memo[n];
    }
    memo[n]=fib(n-1)+fib(n-2);
    return memo[n];
}

// BottomUp
int fibBU(int n){
    vector<int> BU(n+1);
    for(int i=1;i<=n;i++){
        if(i==1 || i==2){
            BU[i]=1;
        }else{
            BU[i]=BU[i-1]+BU[i-2];
        }
    }
    return BU[n];
}

以上是关于c_cpp 斐波那契的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 斐波那契系列

c_cpp 斐波那契尾递归

c_cpp 斐波那契数列的.cpp

c_cpp 一行代码实现斐波那契数列

斐波那契数列

08《算法入门教程》递归算法之斐波那契数列