贝壳找房 斐波那契数列 动态规划

题目描述

菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数K,要求菲波那契数列中第k个数是多少。

输入描述:

输入一行,包含一个正整数k。(0<k<47)

输出描述:

输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小

示例1

输入

19

输出

4181
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1e2+5;
int arr[maxn];
int fib(int n)
{
    if(n==1 || n==2)
    {
        arr[1]=1;
        arr[2]=1;
        return 1;
    }else 
    {
        if(arr[n]==-1)
        {
            arr[n]=fib(n-1)+fib(n-2);
            return arr[n]; 
        }else return arr[n];
    }
}
int main()
{
    memset(arr,-1,sizeof(arr));
    fib(47);
    int n;
    while(cin>>n)
    {
        cout<<arr[n]<<endl;
    }
    return 0;
}
Last modification:January 12th, 2020 at 12:53 am
如果觉得我的文章对你有用,请随意赞赏