目录
- Problem Description
- Input
- Output
- Sample Input
- Sample Output
- 原题链接
- 解题思路
- 代码实现(C++)
Problem Description
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.
Input
Each case contains a number n and you are expected to calculate Fn.(0 <= n <= 30) 。
Output
For each case, print a number Fn on a separate line,which means the nth Fibonacci Number.
Sample Input
1
Sample Output
1
原题链接
- Codeup_1795:问题 A: Fibonacci
解题思路
- 状态转移方程:dp[i] = dp[i - 1] + dp[i - 2]
代码实现(C++)
#include <iostream>using namespace std;#define maxn 31int n;
int dp[maxn];int getDp(int n) {if (n == 0 || n == 1)return dp[n];if (dp[n] == -1)dp[n] = getDp(n - 1) + getDp(n - 2);return dp[n];
}int main() {for (int i = 0; i < maxn; i++)dp[i] = -1;dp[0] = 0;dp[1] = 1;while (~scanf("%d", &n))printf("%d\n", getDp(n));return 0;
}