1. 程式人生 > >利用動態規劃求解Fibonacci數列

利用動態規劃求解Fibonacci數列

題目描述

The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55...} are defined by the recurrence: 
F0=0 F1=1 Fn=Fn-1+Fn-2,n>=2 
Write a program to calculate the Fibonacci Numbers.

輸入

Each case contains a number n and you are expected to calculate Fn.(0<=n<=30) 。

輸出

For each case, print a number Fn on a separate line,which means the nth Fibonacci Number.

樣例輸入

1

樣例輸出

1

提示

#include <cstdio>
#include <cstring>
typedef long long ll;
const int maxn=100;
ll dp[maxn];

ll F(int n){
    if(n==0||n==1) return n;
    if(dp[n]!=-1) return dp[n];
    else{
        dp[n]=F(n-1)+F(n-2);
        return dp[n];
    }
}

int main(){
    int n;
    while(scanf("%d",&n)==1){
        memset(dp,-1,sizeof(dp));
        printf("%lld\n",F(n));
    }
    return 0;
}